参照平等与结构相等之间有什么区别 在 Kotlin ?
val a = File("/myfile.txt")
val b = File("/myfile.txt")
val sameRef = a === b
和
val a = File("/myfile.txt")
val b = File("/myfile.txt")
val both= a == b
答案 0 :(得分:5)
参照平等 ===
(也称为标识)表示两个对象的指针相同。也就是说,对象包含在相同的内存位置,这导致我们指向指向同一对象的事实。
identity:确定两个对象是否共享相同的内存地址
结构平等 ==
反过来意味着两个对象具有相同的内容。您应该通过覆盖equals()方法来指定何时应将两个对象视为相等。
相等:确定两个对象是否包含相同的状态。
与 Java 一样,在 Kotlin 中,默认情况下没有生成特定的equals()
和hashCode()
(不考虑{{3 }})。因此,在您为类重写这些方法之前,==
和===
都会执行身份比较。