代码之家  ›  专栏  ›  技术社区  ›  Matthew Layton

Kotlin-引用相等并不总是有效[重复]

  •  0
  • Matthew Layton  · 技术社区  · 6 年前

    根据 docs , ===

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

    然而,本例返回了预期的false:

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Francesc    6 年前

    这个 === 基本上是指“这些对象是相同类型的吗?它们指向相同的内存地址吗?”

    x y 指向常数 A ,作为字符串常量,它只有一个实例,因此返回true。

    从文件读取时,会为读取的字符串进行分配,因此, == 返回true),但不相同( ===