相等性
- 引用相等(两个引用指向同一对象)。
结构相等由 ==
(以及其否定形式 !=
)操作判断。按照惯例,像 a == b
这样的表达式会翻译成:
也就是说如果 a
不是 null
则调用 equals(Any?)
函数,否则(即 a
是 null
)检测 b 是否与 null
引用相等。
如需提供自定义的相等检测实现,请覆盖 函数。名称相同但签名不同的函数,如 equals(other: Foo)
并不会影响操作符 ==
与 !=
的相等性检测。
结构相等与 Comparable<……>
接口定义的比较无关,因此只有自定义的 equals(Any?)
实现可能会影响该操作符的行为。
否则会使用不符合该标准的结构相等性检测,这会导致 NaN
等于其自身,而 -0.0
不等于 0.0
。
参见:浮点数比较。