在比较两个字符串时,想了解scala ==
的工作原理。
对象comaparision如何在scala中运行?
答案 0 :(得分:2)
==等同于Java中的.equals()
答案 1 :(得分:1)
只需构建Gizmo's answer,而Java中的==
或C#是检查引用相等性的运算符,在Scala中它是一种检查值相等的方法。当你想检查两个字符串(或一般的任何两个值)是否具有相同的值时,应该使用==
。
==
在Any
超类型上声明为最终方法。在内部,它使用equals
方法,也在Any
中声明,但作为非最终方法。当您想要更改==
对某个类型的行为时,可以通过覆盖equals
来执行此操作:
override def equals(that: Any) : Boolean = {
...
}
// You probably would want to override this too
override def hashCode = ...
答案 2 :(得分:0)
在Scala中,一切都是对象,因为@avik提到==
内部使用已经为String类定义的equals
。如果您想为自己的班级正确使用==
,请覆盖equals
。如果要比较参考 - 请使用eq
。来自docs:
表达式x == that
相当于
if (x eq null) that eq null
else x.equals(that)