Ole*_*zov 5 string scala equality reference referenceequals
可以预料,即使字符串是不可变的,Scala中的java.lang.String对象的值相等和引用相等也不相同.这意味着val即使字符串相同,两个字符串保持也不应该是引用相等的.但这是我在2.9.1.final REPL中得到的:
scala> val s1 = "a"; val s2 = "a"
s1: java.lang.String = a
s2: java.lang.String = a
scala> s1 eq s2
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)
知道为什么结果不是false吗?相同的实验List("a")而不是"a"按预期工作.该eq方法在AnyRef中标记为final .是否有专门针对String或编译魔术java.lang.String?