scala中equals方法和==是檢查值是否相等,而eq方法檢查的是引用是否相等。java
Scala 的==與Java的有何差異spa
Java 裏的既能夠比較基本類型也能夠比較引用類型。對於基本類型,Java 的==比較 值比較,如Scala。然而對於引用類型,Java 的==比較了引用的是否爲同一個對象(比較內存地址),也就是說這兩個變量是否都指向於JVM 堆裏的同一個對象。Scala 也提供了這 種機制,名字是 eq。不過,eq和它的反義詞,ne,僅僅應用於 能夠直接映射到Java的對 象。 |
在java中若是要對兩個對象進行值比較,那麼必需要實現equals 和hashCode方法。而在scala中爲開發者提供了case class,默認實現了equals 和hashCode方法。scala
case class Student(){} val stu1 = new Student() val stu2 = new Student() println(stu1 == stu2) println(stu1.eq(stu2)) println(stu1.equals(stu2)) val num1 = 10 val num2 = 10 println(num1 == num2) // println(num1.eq(num2)) eq只能比較引用類型 println(num1.equals(num2))
輸出結果以下:code
true false true true true