基本數(shù)值類型包括Byte/Short/Int/Long/Float/Double。值得注意的是,字符不屬于數(shù)值類型,是一個獨立的數(shù)值類型。
數(shù)據(jù)類型的寬度
| 數(shù)據(jù)類型 | 寬度 |
|---|---|
| Byte | 8 |
| Short | 16 |
| Int | 32 |
| Long | 64 |
| Float | 32 |
| Double | 64 |
字面常量
- 十進(jìn)制:
123 - 長整形:
123L以L結(jié)尾 - 16進(jìn)制:
0xF0以0x開頭 - 2進(jìn)制:
0b0101以0b開頭 - Double型:
123.4/123e10 - Float型:
123.4f以f/F結(jié)尾 - 不支持8進(jìn)制
可以使用_增強(qiáng)數(shù)字可讀性:`0b0101_0000_1010_1111
比較兩個數(shù)字
Kotlin中沒有基礎(chǔ)數(shù)值類型,所有的都是對象,定義的沒一個變量都是封裝的對象,因此在比較時就有數(shù)據(jù)大小還是對象是否相同的區(qū)別。
===比較的是對象地址,也就是對象是不是同一個,==比較的是兩個變量值的大小
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