首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >==和eq算子

==和eq算子
EN

Stack Overflow用户
提问于 2013-12-17 20:55:51
回答 2查看 4.2K关注 0票数 3
代码语言:javascript
复制
scala> val x = "a"
x: String = a

scala> val y = "a"
y: String = a

据我所知,==将调用equals (值相等)。

代码语言:javascript
复制
scala> x == y
res18: Boolean = true

但是,对我来说出乎意料的x eq y,表现得很真实。据我所知,eq检查object identity

代码语言:javascript
复制
scala> x eq y
res19: Boolean = true

Scala编译器是否足够聪明地返回相同(标识)字符串对象?我相信这个词是实习

或者,eq实际上是在执行值相等吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 21:04:09

Scala的字符串实际上是Java.Lang.String,实际上它使用实习生-参见Scala 参考文献 -

代码语言:javascript
复制
type String        = java.lang.String
票数 10
EN

Stack Overflow用户

发布于 2013-12-17 21:11:07

奥塔维奥是对的,它应该和Java一样。

扩展一下:eq文件很好地解释了对平等方法的期望:

在重写equalshashCode方法时,重要的是确保它们的行为与引用相等一致。因此,如果两个对象是相互引用的(o1 eq o2),那么它们应该相等于彼此的(o1 == o2),并且它们应该散列到相同的值(o1.hashCode == o2.hashCode)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20644482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档