基本数值类型包括Byte
/Short
/Int
/Long
/Float
/Double
。值得注意的是,字符不属于数值类型,是一个独立的数值类型。
数据类型的宽度
数据类型 | 宽度 |
---|---|
Byte | 8 |
Short | 16 |
Int | 32 |
Long | 64 |
Float | 32 |
Double | 64 |
字面常量
- 十进制:
123
- 长整形:
123L
以L
结尾 - 16进制:
0xF0
以0x
开头 - 2进制:
0b0101
以0b
开头 - Double型:
123.4
/123e10
- Float型:
123.4f
以f
/F
结尾 - 不支持8进制
可以使用_
增强数字可读性:`0b0101_0000_1010_1111
比较两个数字
Kotlin中没有基础数值类型,所有的都是对象,定义的没一个变量都是封装的对象,因此在比较时就有数据大小还是对象是否相同的区别。
===
比较的是对象地址,也就是对象是不是同一个,==
比较的是两个变量值的大小
val a:Int = 222
println("(a === a) = " + (a === a))
println("(a == a) = " + (a == a))
val aBoxeda:Int = a
val anotherBoxeda:Int = a
println("(aBoxeda === anotherBoxeda) = " + (aBoxeda === anotherBoxeda))
println("(aBoxeda == anotherBoxeda) = " + (aBoxeda == anotherBoxeda))
输出
(a === a) = true
(a == a) = true
(aBoxeda === anotherBoxeda) = true
(aBoxeda == anotherBoxeda) = true
注意上面的声明,两个装箱的变量都是非可空的,如果定义为可空,那么输出的将会是flase
val aBoxeda:Int? = a
val anotherBoxeda:Int? = a
println("(aBoxeda === anotherBoxeda) = " + (aBoxeda === anotherBoxeda))
println("(aBoxeda == anotherBoxeda) = " + (aBoxeda == anotherBoxeda))
看,就像这样,更深层的东西以后再研究
(aBoxeda === anotherBoxeda) = false
(aBoxeda == anotherBoxeda) = true