Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何比较scala中的两个字符串?_String_Scala_Equality - Fatal编程技术网

String 如何比较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中的两个字符串。比如说,

我的字符串是:

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
的痛苦!