Kotlin 其他(六) --- 相等性(Equality)

1、相等性

Kotlin 中有两种类型的相等性:

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

2、引用相等

引用相等由 ===(以及其否定形式 !==)操作判断。a === b 当且仅当 ab 指向同一个对象时求值为 true。

3、结构相等

结构相等由 ==(以及其否定形式 !=)操作判断。按照惯例,像 a == b 这样的表达式会翻译成:

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

也就是说如果 a 不是 null 则调用 equals(Any?) 函数,否则(即 anull)检查 b 是否与 null 引用相等。

请注意,当与 null 显式比较时完全没必要优化你的代码:a == null 会被自动转换为 a=== null

4、浮点数相等性

当相等性检测的两个操作数都是静态已知的(可空或非空的)FloatDouble 类型时,该检测遵循 IEEE 754 浮点数运算标准。

否则会使用不符合该标准的结构相等性检测,这会导致 NaN 等于其自身,而 -0.0 不等于 0.0

参见:浮点数比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值