java 代码中
1、==用于比较两个引用是否指向同一个对象 equals用于比较两个对象是否相等(通常字符串比较)
2、由于字符串特殊 在字符串常量池中的字符串可以使用==也可以使用equals 推荐不管哪种方式 只要是比较字符串就用equals
详解如下
https://www.cnblogs.com/guoyafenghome/p/8542097.html
kotlin中
Kotlin 中的 == 等同于调用 equals() 函数 (kotlin中使用== kotlin代码中 kotlin.jvm.internal.Intrinsics.java已经自行进行了空的判断 )
但是比较两个对象引用是否相等要用 === 操作符。
但这么说其实不准确,Kotlin 并不会直接把 == 编译为调用 equals() 函数,而是用 kotlin.jvm.internal.Intrinsics.java 的 areEqual() 方法包装一下,这个方法有多个重载形式,我们看一下最通用的一个:
public static boolean areEqual(Object first, Object second) {
return first == null ? second == null : first.equals(second);
}
这就保证了空安全。所以说,我们用 == 操作符时不需要担心空安全,a == b 并不等同于 a.equals(b),而是 a?.equals(b) ?: b == null。
详解