1. 程式人生 > >Kotlin 其他(六) --- 相等性(Equality)

Kotlin 其他(六) --- 相等性(Equality)

1、相等性

Kotlin 中有兩種型別的相等性:

  • 引用相等(兩個引用指向同一物件);
  • 結構相等(用 equals() 檢查)。

2、引用相等

引用相等由 ===(以及其否定形式 !==)操作判斷。a === b 當且僅當 ab 指向同一個物件時求值為 true。

3、結構相等

結構相等由 ==(以及其否定形式 !=)操作判斷。按照慣例,像 a == b 這樣的表示式會翻譯成:

a?.equals(b) ?: (b === null)

也就是說如果 a 不是 null 則呼叫 equals(Any?) 函式,否則(即 anull)檢查 b 是否與 null 引用相等。

請注意,當與 null 顯式比較時完全沒必要優化你的程式碼:a == null 會被自動轉換為 a=== null

4、浮點數相等性

當相等性檢測的兩個運算元都是靜態已知的(可空或非空的)FloatDouble 型別時,該檢測遵循 IEEE 754 浮點數運算標準。

否則會使用不符合該標準的結構相等性檢測,這會導致 NaN 等於其自身,而 -0.0 不等於 0.0

參見:浮點數比較