Kotlin Reference: Equality
Kotlin 中有两种类型的相等:
- 引用相等(两个引用指向同一个对象)
- 结构相等(检查
equals())
Referential equality
使用 === 操作(及对应的否定形式 !==) 检查引用相等。当且仅当 a 和 b 指向同一个对象时,a === b 的值为 true。
Structural equality
使用 == 操作(及对应的否定形式 !=) 检查结构相等。按照惯例,形如 a == b 的表达式会被转换为:
[code lang=”kotlin”]a?.equals(b) ?: (b === null)[/code]
即如果 a 不为 null,则调用 equals(Any?) 函数,否则(即 a 为 null)检查 b 是否也为 null。
注意没有必要优化与 null 的显式比较,a == null 会自动翻译为 a === null。