String 如何比较scala中的两个字符串?
我想比较scala中的两个字符串。比如说, 我的字符串是:String 如何比较scala中的两个字符串?,string,scala,equality,String,Scala,Equality,我想比较scala中的两个字符串。比如说, 我的字符串是: scala java scala java c++ scala c++ 我想比较一下字符串 带有每个字符串的“scala c++” 结果应该是, scala c++ = scala java // false scala c++ = scala java c++ // false scala c++ = scala c++ // true 在Scala中,您可以使用=实现相等 scala> "scala c++" =
scala java
scala java c++
scala c++
我想比较一下字符串
带有每个字符串的“scala c++”
结果应该是,
scala c++ = scala java // false
scala c++ = scala java c++ // false
scala c++ = scala c++ // true
在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
==方法在AnyRef类中定义。由于这些方法首先检查空值,然后对第一个对象调用equals方法来查看这两个对象是否相等,因此不必进行特殊的空检查
"test" == null
res0: Boolean = false
参见和
从“
“值之间的相等操作设计为
对于类型的表示形式是透明的。对于值
类型,它是自然(数字或布尔)相等。仅供参考
类型,=被视为来自的等于方法的别名
java.lang.Object。该方法最初定义为引用
相等,但要在子类中重写以实现
这些子类的自然平等概念
值类型的装箱版本将实现一个equals方法,该方法
比较装箱的值。相反,在Java中,==始终表示
引用类型上的引用相等。虽然这有点
为了有效地实施,它还带来了严重的一致性问题
因为相等值的装箱版本可能不再等于
关于==。某些情况需要引用相等,而不是
用户定义的相等。例如hash consing,其中ecency是
对于这些情况,类AnyRef定义了一个额外的eq
方法,该方法不能被重写,并作为引用实现
相等(即,其行为类似于
==在Java中用于引用类型。“
要添加相等比较,可以使用
=代码>用于不平等性。那么什么样的示例会返回true?为什么最后一个测试应该返回false
?这一简单的改进消除了java
的痛苦!