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
。