Kotlin 相等性

1. 概述

Kotlin 中拥有两种相等性类型

  • 引用相等性:两个引用是否指向同一个对象
  • 结构相等性:类似 Java 中的 equals()

2. 引用相等性

引用相等性使用 ===(其否定判断为 !==), 来进行判别,它只判断两个引用是否指向了同一个对象。

a === b 为真当且仅当 ab 指向了同一个对象。

3. 结构相等性

结构相等性的判断类似 Java 中的 equals()
在 Kotlin 中,使用 == 操作符来进行判断(其否定为 !=)。

一个 == 操作符会被转换成以下的相应代码

1
a?.equals(b) ?: (b === null)

也就是说,当 a 非空时,它会调用 equal(Any?),当 a 为空时,它会检查 b 是否也为空。

注意,在空检查时,没有必要转换你的代码,编译器会自动将 a == null 优化为 a === null