Ros*_*y b 22 string scala equality
我想比较scala中的两个字符串.例如,
我的字符串是:
scala java
scala java c++
scala c++
Run Code Online (Sandbox Code Playgroud)
我想比较字符串
每个字符串都有" scala c ++ "
结果应该是,
scala c++ = scala java // false
scala c++ = scala java c++ // false
scala c++ = scala c++ // true
Run Code Online (Sandbox Code Playgroud)
olu*_*ies 35
在Scala中,您可以使用==相等性
scala> "scala c++" == "scala java"
res0: Boolean = false
scala> "scala c++" == "scala java c++"
res1: Boolean = false
scala> "scala c++" == "scala c++"
res2: Boolean = true
Run Code Online (Sandbox Code Playgroud)
==方法在AnyRef类中定义.由于方法首先检查空值,然后在第一个对象上调用equals方法以查看两个对象是否相等,您不必进行特殊的空值检查;
"test" == null
res0: Boolean = false
Run Code Online (Sandbox Code Playgroud)
摘自" Scala编程语言第二版概述 ";
" 值之间的相等操作==被设计为对于类型的表示是透明的.对于值类型,它是自然的(数字或布尔)相等.对于引用类型,==被视为equals方法的别名来自 java.lang.Object.该方法最初被定义为引用相等,但是要在子类中重写以实现这些子类的自然相等概念.例如,值类型的盒装版本将实现equals方法,相比之下,在Java中,==始终意味着引用类型的引用相等.虽然这实现起来更有效,但它也引入了严重的连贯性问题,因为相等值的盒装版本可能不再相等尊重==.有些情况需要引用相等而不是用户定义的相等.例如hash-consing,eciency是最重要的.对于这些情况,类AnyRef定义了另外的eq me 的ThOD,这不能被重写,并且被实现为引用相等(即,它的行为就像 ==在Java中引用类型)".