scala中的==、equals、eq

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
相關文章
相關標籤/搜索