Kotlin相等性

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

  • 引用相等(兩個引用指向同一對象)
  • 結構相等(用 equals() 檢查)

引用相等

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

結構相等

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

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

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

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