在Kotlin中,一切都是對象
- 整數:Byte、short、Int、Long,所有以未超出 Int 最大值的整型值初始化的變量都會推斷爲 Int 類型。如果初始值超過了其最大值,那麼推斷爲 Long 類型。 如需顯式指定 Long 型值,請在該值後追加 L 後綴。
- 浮點數 :Float、Double,對於以小數初始化的變量,編譯器會推斷爲 Double 類型。 如需將一個值顯式指定爲 Float 類型,請添加 f 或 F 後綴
- Kotlin較小的類型不能隱式轉換爲較大的類型,需要顯式轉換
每個數字類型支持如下的轉換:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
不過算術運算會有重載做適當轉換
val l = 1L + 3
- 數字字面值中的下劃線(自 1.1 起),可以使用下劃線使數字常量更易讀
val oneMillion = 1_000_000
- 數字是物理存儲爲JVM的原生類型,除非我們需要一個可空的引用(如Int?)或泛型,後者情況下會把數字裝箱,數字裝箱不一定保留同一性,但保留了相等性。(==比較對象的值,===比較對象的地址)
//比較同一性,如果a=1,打印結果爲兩個true,如果a=10000,打印結果爲:true、false
val a = 10000
println(a === a)
val b: Int? = a
val c: Int? = a
println(b === c)
//比較相等性,打印結果爲兩個true
val a = 10000
println(a == a)
val b: Int? = a
val c: Int? = a
println(b == c)
- 位運算,下面是完整的位運算列表(只用於Int和Long)
shl(bits) – 有符號左移
shr(bits) – 有符號右移
ushr(bits) – 無符號右移
and(bits) – 位與
or(bits) – 位或
xor(bits) – 位異或
inv() – 位非
var x=1 shr 2