val a=new String("Hello")
和val a="Hello"
示例:
val a="Hello"
val b="Hello"
a eq b
res:Boolean=True
类似地:
val a=new String("Hello")
val b=new string("Hello")
a eq b
res:Bolean=False
答案 0 :(得分:1)
首先,eq
(及其相对的ne
)用于所谓的引用相等。
您观察到的行为是技术上称为字符串实习的结果,是Java的继承行为。 Scala在底层使用了java.util.String。您可以在REPL中观察到这一点:
scala> val s = "Hello World!"
s: String = Hello World!
scala> s.isInstanceOf[java.lang.String]
res1: Boolean = true
You can see a general explanation of eq, ne, and == here
To learn about JVM string interning see this Wikipedia article