Kotlin 中有兩種類型的相等性:
equals() 檢查)引用相等由 ===(以及其否定形式 !==)操作判斷。a === b
當(dāng)且僅當(dāng) a 和 b 指向同一個(gè)對(duì)象時(shí)求值為 true。
結(jié)構(gòu)相等由 ==(以及其否定形式 !=)操作判斷。按照慣例,像 a == b 這樣的表達(dá)式會(huì)翻譯成
a?.equals(b) ?: (b === null)
也就是說(shuō)如果 a 不是 null 則調(diào)用 equals(Any?) 函數(shù),否則(即 a 是 null)檢查 b 是否與 null 引用相等。
請(qǐng)注意,當(dāng)與 null 顯式比較時(shí)完全沒(méi)必要優(yōu)化你的代碼:a == null 會(huì)被自動(dòng)轉(zhuǎn)換為 a=== null。