gpt4 book ai didi

scala - Scala 中的比较

转载 作者:行者123 更新时间:2023-12-04 09:58:21 24 4
gpt4 key购买 nike

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

最佳答案

eq比较内存引用。

字符串字面量放在字符串常量池中,因此在第一个示例中它们共享相同的内存引用。这是 comes from Java 的行为( scala.String 建立在 java.lang.String 之上)。

在第二个示例中,您在运行时分配两个实例,因此当您比较它们时,它们位于不同的内存位置。

这与Java完全相同,因此您可以引用此答案以获取更多信息:What is the difference between "text" and new String("text")?

现在,如果你想比较它们的值(而不是它们的内存引用),你可以使用 == (或 equals )在 Scala 中。

例子:

val a = new String("Hello")
val b = new String("Hello")
a eq b // false
a == b // true
a equals b // true

这与 Java 不同,其中 ==是一个操作符,其行为类似于 eq在斯卡拉。

另请注意 ==equals处理方式略有不同 null值(通常建议使用 ==)。有关该主题的更多信息: Whats the difference between == and .equals in Scala?

关于scala - Scala 中的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com