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
。