Kotlin Reference: Equality

  Kotlin 中有两种类型的相等:

  • 引用相等(两个引用指向同一个对象)
  • 结构相等(检查 equals()

Referential equality

  使用 === 操作(及对应的否定形式 !==) 检查引用相等。当且仅当 ab 指向同一个对象时,a === b 的值为 true。

Structural equality

  使用 == 操作(及对应的否定形式 !=) 检查结构相等。按照惯例,形如 a == b 的表达式会被转换为:

[code lang=”kotlin”]a?.equals(b) ?: (b === null)[/code]

即如果 a 不为 null,则调用 equals(Any?) 函数,否则(即 anull)检查 b 是否也为 null

  注意没有必要优化与 null 的显式比较,a == null 会自动翻译为 a === null