作者:用户f2r3o98akh | 来源:互联网 | 2023-02-01 10:28
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
Alexander Ro..
6
引用相等 ===
(也称为标识)意味着两个对象的指针是相同的.也就是说,对象包含在相同的内存位置,这导致我们指向指向同一对象的事实.
identity:确定两个对象是否共享相同的内存地址
==
反过来,结构平等意味着两个对象具有相同的内容.您应该通过覆盖equals()方法来指定何时应将两个对象视为相等.
等于:确定两个对象是否包含相同的状态.
还有在Java的,在科特林有是没有具体equals()
和hashCode()
默认生成(不考虑数据类).因此,直到你重写这些方法为您的类,都==
和===
进行身份比较.
1> Alexander Ro..:
引用相等 ===
(也称为标识)意味着两个对象的指针是相同的.也就是说,对象包含在相同的内存位置,这导致我们指向指向同一对象的事实.
identity:确定两个对象是否共享相同的内存地址
==
反过来,结构平等意味着两个对象具有相同的内容.您应该通过覆盖equals()方法来指定何时应将两个对象视为相等.
等于:确定两个对象是否包含相同的状态.
还有在Java的,在科特林有是没有具体equals()
和hashCode()
默认生成(不考虑数据类).因此,直到你重写这些方法为您的类,都==
和===
进行身份比较.