運算
shl(bits) – 有符號左移 (Java 的 <<)
shr(bits) – 有符號右移 (Java 的 >>)
ushr(bits) – 無符號右移 (Java 的 >>>)
and(bits) – 位與
or(bits) – 位或
xor(bits) – 位異或
inv() – 位非
字符
字符字面值用單引號括起來: '1'。 特殊字符可以用反斜杠轉義。 支持這幾個轉義序列:\t、 \b、\n、\r、'、"、\ 和 $。 編碼其他字符要用 Unicode 轉義序列語法:'\uFF00'。
我們可以顯式把字符轉換為 Int 數字:
fun decimalDigitValue(c: Char): Int {
if (c !in '0'..'9')
throw IllegalArgumentException("Out of range")
return c.toInt() - '0'.toInt() // 顯式轉換為數字
}
布爾
布爾用 Boolean 類型表示,它有兩個值:true 和 false。
若需要可空引用布爾會被裝箱。
內置的布爾運算有:
|| – 短路邏輯或
&& – 短路邏輯與
! - 邏輯非
數組
數組在 Kotlin 中使用 Array 類來表示,它定義了 get 和 set 函數(按照運算符重載約定這會轉變為 [])和 size 屬性,以及一些其他有用的成員函數:
class Array<T> private constructor() {
val size: Int
operator fun get(index: Int): T
operator fun set(index: Int, value: T): Unit
operator fun iterator(): Iterator<T>
// ……
}
可以使用庫函數 arrayOf() 來創建一個數組并傳遞元素值給它,這樣 arrayOf(1, 2, 3) 創建了 array [1, 2, 3]。 或者,庫函數 arrayOfNulls() 可以用于創建一個指定大小、元素都為空的數組。
另一個選項是用接受數組大小和一個函數參數的工廠函數,用作參數的函數能夠返回 給定索引的每個元素初始值:
// 創建一個 Array<String> 初始化為 ["0", "1", "4", "9", "16"]
val asc = Array(5, { i -> (i * i).toString() })
如上所述,[] 運算符代表調用成員函數 get() 和 set()。
注意: 與 Java 不同的是,Kotlin 中數組是不型變的(invariant)。這意味著 Kotlin 不讓我們把 Array<String>
賦值給 Array<Any>
,以防止可能的運行時失敗(但是你可以使用 Array<out Any>
, 參見類型投影)。
Kotlin 也有無裝箱開銷的專門的類來表示原生類型數組: ByteArray
、 ShortArray
、IntArray
等等。這些類和 Array
并沒有繼承關系,但是 它們有同樣的方法屬性集。它們也都有相應的工廠方法:
val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]