@RitcheeQinG
2020-03-23T08:51:22.000000Z
字数 1597
阅读 332
Android
共8种,可以根据是否支持null来区分
不支持null:
Byte, Short, Int, Long
支持null:
Byte?, Short?, Int?, Long?
它们继承自Number
类,全都是引用类型
不指定且初始值为整数时默认为Int,可以认为Int对应java的int,Int?对应Java的Integer
进制表达
整数即十进制
二进制:0b
十六进制:0x
不支持八进制
Float, Double
只有浮点型可以使用科学计数法
且浮点型可以 /0.0,会得到正无穷大
但是 /0 则会报错
不能直接被当作整型使用
有三种表达方式
1. 'A'
直接字符
2. '\n'
转义符
3. '\uXXXX'
Unicode
Kotlin中不存在隐式转换,必须显式转换
所有的类型都提供了toXXX()
的方法(比如toInt()
)
但是Kotlin在表达式中可以自动转换
比如:
var bookPrice : Byte = 79
var itemPrice : Short = 120
var total = bookPrice + itemPrice // 1
val tot = bookPrice.toLong() + itemPrice.toByte() // 2
在上面的表达式1里,后面两个变量都被自动转换成为了Int
2中,则都被自动转换成了Long
浮点数和整数之间的转换:
Double/Float被强制转换为整型时,小数部分会被直接截断
表达式中的结果则按当前最高等级来算
操作数的等级:
Byte -> Short -> Int -> Long -> Float -> Double
Boolean和Boolean?
Boolean类型是可以直接作为if等表达式的参数的,但是Boolean?类型不行,因为Boolean?类型的值可以是null
带?的都是可空类型,使用时有几种方式
var b : Boolean? = null
var len1 = if (b != null) b.length else -1
var len2 = b?.length ?: -1
其中上下两个表达式含义相同,?:
是判空的简单写法,不为空用左边,为空用右边
分为两种:
转义字符串:可以包含转义符,和Java的String类似
原始字符串:可以包含换行和任意文本
fun main(args : Array<String>) {
var str = "abc.and" // 转义字符串
val txt = """
|天上白玉京
|十二楼五城
|仙人抚我顶
|结发受长生
""".trimMargin()
// 原始字符串,需要用三个双引号
}
trimMargin()
代表去掉边界符号|
左边的内容(一般是为了去掉缩进)
字符串模板
Kotlin的字符串中可以有变量或者表达式
var bookPrice = 79
var s = "book的price是:${bookPrice}"
val myStr = "ritcheeQinG.com"
println("${myStr}这个字符串的长度是${myStr.length}")
相比Java可能是省去了分开计算再挨个拼起来的过程
原始字符串中一样可以这么写
类型别名
类似C里面的typedef
,Kotlin可以为已有的类型指定一个新的名字
用typealias
关键字,通过这种方式泛型可以直接被省略掉,方便编写
.kt
作为结尾main()
,但Kotlin并非严格的面向对象语言,main方法也不需要定义在一个类当中;
new
关键字,直接类名()
即可