Kotlin "E;==&引用;在科特林。这是什么意思? 伴生对象DiffCallback:DiffUtil.ItemCallback(){ 覆盖乐趣项相同(旧项:MarsProperty,新项:MarsProperty):布尔值{ 返回oldItem==newItem }
Kotlin "E;==&引用;在科特林。这是什么意思? 伴生对象DiffCallback:DiffUtil.ItemCallback(){ 覆盖乐趣项相同(旧项:MarsProperty,新项:MarsProperty):布尔值{ 返回oldItem==newItem },kotlin,Kotlin,==是什么意思?Kotlin中的==运算符是引用相等运算符。意思是:这些引用是否指向内存中的相同位置(它们在物理上是相同的对象) 与结构相等运算符==相反。意思是:这些对象是否具有相同的结构(逻辑上是相同的对象) 请注意,如果两个对象在引用上相等(指向内存中的同一位置),则它们在结构上相等(组成相同)。Kotlin中的==运算符是引用相等运算符。意思是:这些引用是否指向内存中的同一位置(它们在物理上是同一对象) 与结构相等运算符==相反。意思是:这些对象是否具有相同的结构(逻辑上是相同的对象)
==
是什么意思?Kotlin中的==
运算符是引用相等运算符。意思是:这些引用是否指向内存中的相同位置(它们在物理上是相同的对象)
与结构相等运算符==
相反。意思是:这些对象是否具有相同的结构(逻辑上是相同的对象)
请注意,如果两个对象在引用上相等(指向内存中的同一位置),则它们在结构上相等(组成相同)。Kotlin中的
==
运算符是引用相等运算符。意思是:这些引用是否指向内存中的同一位置(它们在物理上是同一对象)
与结构相等运算符==
相反。意思是:这些对象是否具有相同的结构(逻辑上是相同的对象)
请注意,如果两个对象在引用上相等(指向内存中的同一位置),则它们在结构上相等(组成相同)。如文档所述: 在Kotlin中有两种类型的相等:
--结构相等(检查equals())。
--参照平等(二) 引用指向同一对象) 所述的引用相等运算符
==
检查两个变量是否指向内存中的同一对象
通过===操作检查引用相等性(并将其取反)
对应项!==)。a===b当且仅当a和b为真时才计算为真
指向同一对象。对于表示为
运行时的基元类型(例如Int),即===相等检查
相当于==检查
另一方面,结构等式检查类的equals()
方法
例如,考虑下面的代码:
companion object DiffCallback : DiffUtil.ItemCallback<MarsProperty>() {
override fun areItemsTheSame(oldItem: MarsProperty, newItem: MarsProperty): Boolean {
return oldItem === newItem
}
结构相等运算符=
返回true,因为Integer中有一个检查其实际值的等于方法,但引用相等运算符==
返回false,因为它们的引用不同
考虑另一个例子:
val one = Integer(1)
val anotherOne = Integer(1)
println(one == anotherOne) //true
println(one === anotherOne) //false
在这种情况下,两个运算符都返回false,因为类
Person
没有equals方法,并且没有检查其实际值。但是如果重写equals方法或将Person
设为数据类,则第一个运算符返回true,因为数据类会自动重写equals方法。但是=
仍然返回false,因为引用不同。如文档所述:
在Kotlin中有两种类型的相等:--结构相等(检查equals())。
--参照平等(二) 引用指向同一对象) 所述的引用相等运算符
==
检查两个变量是否指向内存中的同一对象
通过===操作检查引用相等性(并将其取反)
对应项!==)。a===b当且仅当a和b为真时才计算为真
指向同一对象。对于表示为
运行时的基元类型(例如Int),即===相等检查
相当于==检查
另一方面,结构等式检查类的equals()
方法
例如,考虑下面的代码:
companion object DiffCallback : DiffUtil.ItemCallback<MarsProperty>() {
override fun areItemsTheSame(oldItem: MarsProperty, newItem: MarsProperty): Boolean {
return oldItem === newItem
}
结构相等运算符=
返回true,因为Integer中有一个检查其实际值的等于方法,但引用相等运算符==
返回false,因为它们的引用不同
考虑另一个例子:
val one = Integer(1)
val anotherOne = Integer(1)
println(one == anotherOne) //true
println(one === anotherOne) //false
在这种情况下,两个运算符都返回false,因为类Person
没有equals方法,并且没有检查其实际值。但是如果重写equals方法或将Person
设为数据类,则第一个运算符返回true,因为数据类会自动重写equals方法。但是=
仍然返回false,因为引用不同