国产A级作爱片无码_婷婷五月开心_99久久精品国产免费_中国妞XXX的视频_内射丰满高大五十五岁熟女

首頁 > 綜合 >

環(huán)球微資訊!Kotlin學(xué)習(xí)之==、equals、===三者的區(qū)別與聯(lián)系

來源:嗶哩嗶哩 發(fā)布日期: 2023-02-05 17:51:35

背景

在代碼中,我們經(jīng)常需要判斷兩個(gè)變量是否相等,這里相等一般有兩種含義,一種是判斷兩者是否指向同一個(gè)對象引用,另一種是判斷兩者屬性是否相同。


(相關(guān)資料圖)

學(xué)過Java的同學(xué)應(yīng)該知道,在Java中判斷是否指向同一個(gè)引用使用的是 ==,而判斷屬性是否相同,需要通過equals()方法來比較,并且此時(shí)就需要重寫equals()方法(一般需要同時(shí)重寫hashCod()e方法)。

但是在Kotlin中==的底層也是調(diào)用equals()方法,因此兩者是等價(jià)的。=== 又是什么?

測試

Kotlin中==的底層也是調(diào)用equals()方法,可以通過以下代碼來驗(yàn)證。

根據(jù)以上代碼的驗(yàn)證結(jié)果可知,重寫equals方法后,兩個(gè)不同對象(屬性相同),使用 == 運(yùn)算,結(jié)果也為 true,因此 == 和 equals() 是等價(jià)的。

那么在Kotlin中難道就沒有明確比較兩個(gè)變量所指向的對象引用是否相同的方式了嗎?答案是有的,就是使用 === ,通過以下代碼可以驗(yàn)證。

結(jié)論????????

至此,==、equals()和===三者的關(guān)系就已經(jīng)搞清楚了。

Kotlin中,== 和 equals()等價(jià),== 的底層實(shí)際就是調(diào)用的equals(),默認(rèn)是比較的兩個(gè)變量所指向的對象引用是否相同,可以通過重寫equals()方法(同時(shí)重寫hashCode()方法),修改為比較屬性值。

=== 用于檢查兩個(gè)變量是否引用相同的底層對象,無論對象是什么類型。

如果有哪里沒講明白或講的不對的地方,還請各位大佬評論區(qū)告訴我,一起交流學(xué)習(xí)。

下期預(yù)告:從本期內(nèi)容可知,如果比較對象時(shí),我們想要比較的是屬性值是否相同,而不是對象的引用是否相同,此時(shí)我們就需要重寫equals()方法(同時(shí)重寫hashcode()方法)。在Java中我們只能這么做,但在Kotlin中,它為我們提供了更加簡便的實(shí)現(xiàn)方式,那就是使用data修飾類,使其作為數(shù)據(jù)類,具體使用方式見下一期(點(diǎn)個(gè)關(guān)注,更新提醒,哈哈)。

關(guān)鍵詞: 是否相同 對象引用 應(yīng)該知道

Copyright   2015-2022 太平洋供銷網(wǎng)  版權(quán)所有  備案號: 豫ICP備2022016495號-17   聯(lián)系郵箱:93 96 74 66 9@qq.com