Kotlin中有两种类型的相等:
- 引用相等(两个引用指向同一个对象)
- 结构相等(
equals()检查)
引用相等(Referential equality)
引用相等通过===操作符(相反操作符是!==)来检查。当a===b返回true的时候,意味着a和b指向同一个对象。
结构相等(Structural equality)
结构相等通过==操作符(相反操作符是!=)来检查。按照惯例,a == b的表达式将会被翻译为:
a?.equals(b) ?: (b === null)
也就是说,如果a不是null,将调用equals(Any?)函数,否则,将检查b是否是null。
注意:当显示与null比较的时候,没有必要优化你的代码:a == null将会被自动转换为a === null。