基本数值类型包括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










网友评论