Kotlin 其他(六) --- 相等性(Equality)
阿新 • • 發佈:2019-02-17
1、相等性
Kotlin 中有兩種型別的相等性:
- 引用相等(兩個引用指向同一物件);
- 結構相等(用
equals()
檢查)。
2、引用相等
引用相等由 ===
(以及其否定形式 !==
)操作判斷。a === b
當且僅當 a
和 b
指向同一個物件時求值為 true。
3、結構相等
結構相等由 ==
(以及其否定形式 !=
)操作判斷。按照慣例,像 a == b
這樣的表示式會翻譯成:
a?.equals(b) ?: (b === null)
也就是說如果 a
不是 null
則呼叫 equals(Any?)
函式,否則(即 a
是 null
)檢查 b
是否與 null
引用相等。
請注意,當與 null
顯式比較時完全沒必要優化你的程式碼:a == null
會被自動轉換為 a=== null
。
4、浮點數相等性
當相等性檢測的兩個運算元都是靜態已知的(可空或非空的)Float
或 Double
型別時,該檢測遵循 IEEE 754 浮點數運算標準。
否則會使用不符合該標準的結構相等性檢測,這會導致 NaN
等於其自身,而 -0.0
不等於 0.0
。
參見:浮點數比較