相等
Kotlin官网:Other-Equality
Kotlin中有两种相等:
- 结构相等,使用equals()函数实现;
- 引用相等,判断两者指向的是否为同一对象
结构相等
==
相等,!=
不相等,a == b
会被转换成:
a?.equals(b) ?: (b === null)
当a不为null时,会调用a的equals(Any?)
函数,为null时,判断b是否也为null。
对于和null比较的情况,既a == null
,会自动当做a === null
处理。
浮点数相等
当静态分配为Float或Double型,非空和可空都行,执行《IEEE 745》标准。
当作为其他类型时,NaN认为和NaN相等,0.0和-0.0不相等,详见2-1基本类型,浮点数比较。
引用相等
===
相等,!==
不相等,a === b
在a和b指向同一对象时为true。
对于基本类型,如Int,==
和===
效果相同。