Scala中的比较

时间:2016-08-16 09:37:09

标签: scala

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

1 个答案:

答案 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