区分Kotlin中的 == 和 ===
测试代码
1 | fun main() { |
测试输出
1 | true |
我们可以点击跳转看到,== 在kotlin中是一个被重载了的操作符合
点击跳转实现 ,等价于调用object的equals 函数
而 === 不能直接跳转。我们通过反编译成字节码再编反译成java,=== 等价于 java 中的==,比较的是地址, ==在kotlin中是Intrinsics.areEqual方法。
https://asmsupport.github.io/doc/0.4/jvmref/ref-if_acmpne.html === 等号中含有IF_ACMPNE知冷暖
方便查看,可以再反编译成java,查看
1 | public static final void main() { |
一般Intrinsics.areEqual的实现是判断内容相等,=== 判断的是地址相等
总结
在kotlin中 ,== 被重载为equals,判断的是内容相同就相等。=== 判断的是地址相等