kotlin更多语言结构——>相等性
2022/1/27 6:04:33
本文主要是介绍kotlin更多语言结构——>相等性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Kotlin 中有两种类型的相等性:
— 结构相等(用 equals() 检测);
— 引用相等(两个引用指向同一对象)。
结构相等
结构相等由 ==(以及其否定形式 !=)操作判断。按照惯例,像 a == b 这样的表达式会翻译成:
a?.equals(b) ?: (b === null)
也就是说如果 a 不是 null 则调用 equals(Any?) 函数,否则(即 a 是 null )检测 b 是否与 null 引 用相等。
请注意,当与 null 显式比较时完全没必要优化你的代码:a == null 会被自动转换为 a === null
如需提供自定义的相等检测实现,请覆盖 equals(other: Any?): Boolean 函数。名称相同但签名不同的函数,如 equals(other: Foo) 并不会影响操作符 == 与 != 的相等性检测
结构相等与 Comparable<......> 接口定义的比较无关,因此只有自定义的 equals(Any?) 实现可能会影响该操作符的行为。
浮点数相等性
当相等性检测的两个操作数都是静态已知的(可空或非空的)Float 或 Double 类型时,该检测遵循 IEEE 754 浮点数运算标准
否则会使用不符合该标准的结构相等性检测,这会导致 NaN 等于其自身,而 -0.0 不等于 0.0 。
引用相等
引用相等由 ===(以及其否定形式 !==)操作判断。a === b 当且仅当 a 与 b 指向同一个对象时求值为 true。对于运行时表示为原生类型的值(例如 Int),=== 相等检测等价于 == 检测。
这篇关于kotlin更多语言结构——>相等性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-06Kotlin委托属性(1)
- 2023-06-15Kotlin协程-那些理不清乱不明的关系
- 2023-06-08[Kotlin Tutorials 21] 协程的取消
- 2023-05-26Kotlin难点
- 2023-02-23【备战春招】第16天 Kotlin实用技巧
- 2023-02-23【备战春招】第15天 Kotlin扩展Extensions技术探秘
- 2023-02-22【备战春招】第14天 深入理解Kotlin注解
- 2023-02-21【备战春招】第12天 深入理解Kotlin类与接口
- 2023-02-21【备战春招】第13天 深入理解Kotlin泛型
- 2023-02-18【备战春招】第10天 Kotlin方法与Lambda表达式