Kotlin - 引用相等并不总是有效

标签 kotlin

根据docs , ===执行引用相等。

考虑到以下引用相等比较,这似乎并不适用于所有情况:

val x = "A"
val y = "A"

println(x === y) // "true"
println("A" === "A") // "true"

我希望这两种情况都会返回 false。

但是这个示例按预期返回 false:

val x = readLine()!! // "A"
val y = readLine()!! // "A"

println(x === y) // "false"

那么为什么引用相等比较适用于后一种情况,而不适用于前一种情况?

最佳答案

=== 基本上意味着“这些对象是否属于同一类型,它们是否指向相同的内存地址?”

在第一个示例中,xy 都指向一个常量 A,作为字符串常量,有一个的实例,因此它们返回 true。

当您从文件中读取时,会为读取的字符串进行分配,因此,xy 指向不同的内存地址,因此它们是相等的( == 返回 true),但不相同(=== 返回 false)。

关于Kotlin - 引用相等并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859180/

相关文章:

hibernate - 为什么带有@EmbeddedId的实体不能在对应的@Embeddable类中使用LocalDateTime?

generics - Kotlin doc泛型示例中的compareTo,不返回

android - 在 Activity 的 init block 中使用 'this' 作为上下文?

java - Android 路径形状中间的文本居中

java - 软键盘: Adjust_Resize pushing content offscreen

android - 在 Kotlin for Android 中触发接口(interface)

kotlin - Kotlin 的微型网络框架

immutability - Kotlin 实例化不可变列表

functional-programming - Kotlin中的元素式算术运算

android - PhilJay 在 MPAndroidChart 中显示整数值而不是小数?