相等比较

Kotlin 有两种类型的相等比较:

  • 引用相等(Referential equality)- 指向同一个对象
  • 结构相等(Structural equality)- 通过 equals() 来检查

结构相等

结构相等通过 == 操作符来判断(否定形式是 !=)。按照惯例,像 a == b 这样的表达式会被转换成:

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

如果 a 不为 nullequals(Any?) 会被调用,否则(anull)会检查 bnull 是否是引用相等。

注意,当与 null 做显示对比时优化代码没有意义,因为 a == null 会被自动转换成 a === null

浮点数相等

当相等比较的操作数确定是 Float 或者 Double 类型时(可为空),比较操作遵循浮点运算的 IEEE 754 标准。

否则使用结构相等,这种方式与规范不符,因为 NaN 等于它自己,-0.0 不等于 0.0

引用相等

引用相等通过 === 操作来判断(否定形式是 !==)。a === b 为 true 的唯一条件是 ab 指向同一个对象。

results matching ""

    No results matching ""