溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala對象的相等性舉例分析

發(fā)布時間:2021-12-10 08:00:11 來源:億速云 閱讀:326 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“Scala對象的相等性舉例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

如果你想比較一下看看兩個Scala對象是否相等,可以使用或者==,或它的反義!=。下面舉幾個例子:

scala> 1 == 2 res24: Boolean = false scala> 1 != 2 res25: Boolean = true scala> 2 == 2 res26: Boolean = true

這些操作對所有對象都起作用,而不僅僅是基本類型。例如,你可以用他比較列表:

scala> List(1, 2, 3) == List(1, 2, 3)  res27: Boolean = true scala> List(1, 2, 3) == List(4, 5, 6)  res28: Boolean = false

進一步,你還可以比較不同類型的兩個對象:

scala> 1 == 1.0 res29: Boolean = true scala> List(1, 2, 3) == "hello" res30: Boolean = false

你甚至可以比較null,或任何可能是null的東西。不會有任何異常被拋出:

scala> List(1, 2, 3) == null res31: Boolean = false scala> null == List(1, 2, 3)  res32: Boolean = false

如你所見,==已經(jīng)被仔細地加工過,因此在許多情況下你都可以得到你想要的相等性的比較。這只是用了一個非常簡單的規(guī)則:首先檢查左側(cè)是否為null,如果不是,調(diào)用equals方法。由于equals是一個方法,因此比較的精度取決于左手邊的參數(shù)。又由于已經(jīng)有一個自動的null檢查,因此你不需要手動再檢查一次了。自動檢查機制不會檢查右手側(cè)的參數(shù),但是任何合理的equals方法都應在參數(shù)為null的時候返回false。

這種類型的比較對于不同的對象也會產(chǎn)生true,只要他們的內(nèi)容是相同的并且它們的equals方法是基于內(nèi)容編寫的。例如,以下是恰好都有五個同樣字母的兩個字串的比較:

scala> ("he" + "llo") == "hello" res33: Boolean = true

Scala的==與Java的有何差別

Java里的既可以比較原始類型也可以比較參考類型。對于原始類型,Java的==比較值的相等性,如Scala。然而對于參考類型,Java的==比較了參考相等性:reference equality,也就是說這兩個變量是否都指向于JVM堆里的同一個對象。Scala也提供了這種機制,名字是eq。不過,eq和它的反義詞,ne,僅僅應用于可以直接映射到Java的對象。

“Scala對象的相等性舉例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI