[关闭]
@RitcheeQinG 2020-03-23T08:51:22.000000Z 字数 1597 阅读 332

Kotlin学习(1)

Android


1. Kotlin中的类型

1.1 整型

共8种,可以根据是否支持null来区分
不支持null:
Byte, Short, Int, Long
支持null:
Byte?, Short?, Int?, Long?
它们继承自Number类,全都是引用类型
不指定且初始值为整数时默认为Int,可以认为Int对应java的int,Int?对应Java的Integer

进制表达
整数即十进制
二进制:0b
十六进制:0x
不支持八进制

1.2 浮点型

Float, Double
只有浮点型可以使用科学计数法
且浮点型可以 /0.0,会得到正无穷大
但是 /0 则会报错

1.3 字符型

不能直接被当作整型使用
有三种表达方式
1. 'A' 直接字符
2. '\n' 转义符
3. '\uXXXX' Unicode

1.4 类型转换

Kotlin中不存在隐式转换,必须显式转换
所有的类型都提供了toXXX()的方法(比如toInt()
但是Kotlin在表达式中可以自动转换
比如:

  1. var bookPrice : Byte = 79
  2. var itemPrice Short = 120
  3. var total = bookPrice + itemPrice // 1
  4. val tot = bookPrice.toLong() + itemPrice.toByte() // 2

在上面的表达式1里,后面两个变量都被自动转换成为了Int
2中,则都被自动转换成了Long

浮点数和整数之间的转换:
Double/Float被强制转换为整型时,小数部分会被直接截断
表达式中的结果则按当前最高等级来算

操作数的等级:
Byte -> Short -> Int -> Long -> Float -> Double

1.5 null安全

Boolean和Boolean?
Boolean类型是可以直接作为if等表达式的参数的,但是Boolean?类型不行,因为Boolean?类型的值可以是null

带?的都是可空类型,使用时有几种方式

  1. var b : Boolean? = null
  2. var len1 = if (b != null) b.length else -1
  3. var len2 = b?.length ?: -1

其中上下两个表达式含义相同,?:是判空的简单写法,不为空用左边,为空用右边

1.6 字符串

分为两种:
转义字符串:可以包含转义符,和Java的String类似
原始字符串:可以包含换行和任意文本

  1. fun main(args : Array<String>) {
  2. var str = "abc.and" // 转义字符串
  3. val txt = """
  4. |天上白玉京
  5. |十二楼五城
  6. |仙人抚我顶
  7. |结发受长生
  8. """.trimMargin()
  9. // 原始字符串,需要用三个双引号
  10. }

trimMargin()代表去掉边界符号|左边的内容(一般是为了去掉缩进)

字符串模板
Kotlin的字符串中可以有变量或者表达式

  1. var bookPrice = 79
  2. var s = "book的price是:${bookPrice}"
  3. val myStr = "ritcheeQinG.com"
  4. println("${myStr}这个字符串的长度是${myStr.length}")

相比Java可能是省去了分开计算再挨个拼起来的过程
原始字符串中一样可以这么写

类型别名
类似C里面的typedef,Kotlin可以为已有的类型指定一个新的名字
typealias关键字,通过这种方式泛型可以直接被省略掉,方便编写

与Java的区别

  1. Kotlin文件以.kt作为结尾
  2. Kotlin并不要求文件名必须对应类名
  3. Kotlin file和Kotlin class的区别在于Kotlin File中可以有多个类,创建一个Kotlin class之后,如果在里面编写超过一个类,会自动改为Kotlin file形式
  4. Kotlin的入口同样是main(),但Kotlin并非严格的面向对象语言,main方法也不需要定义在一个类当中
  5. Kotlin语句末尾无需加;
  6. Kotlin创建对象并不需要使用new关键字,直接类名()即可
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注