第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

equals里面的equals為啥work?

重寫equals方法,最后一個if判斷:if (this.name.equals(cr.name)) 這里用到的equals方法是原始的么?為什么這兩個名字的判斷會給出true的可能,按原始定義,兩個不一樣的對象不是應(yīng)該返回false么,即使內(nèi)容一樣?

正在回答

2 回答

你的理解一部分對,一部分不恰當(dāng)。

其實就是String是簡單的引用類型,所以用equals時,程序內(nèi)部知道去判斷兩個字符串中的一系列字符是否一樣,從而得到判斷結(jié)果,但是遇到一個復(fù)雜點的對象,計算機不知道我們認(rèn)定的“相同”的判斷規(guī)則,所以需要我們覆寫這個equals方法。想想如果各種類型都能夠判斷的話,計算機需要做的工作太復(fù)雜了。比如一個對象有十個屬性,他就需要去分別比較每個屬性的值,如果每個屬性又都是復(fù)雜的類型,那比較工作就一套嵌一套,沒完沒了了。效率是不是很低呢?所以根據(jù)用戶需求自己去覆寫是最好的了。

equals:判斷值是否相同。

? ==??? :判斷地址是否相同。

對于String類型的,如果你利用他的構(gòu)造函數(shù)創(chuàng)建String對象,即使兩個值相同,用==也是不相等滴!他們兩個本質(zhì)上是不一樣的奧~

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

紅袖侍讀 提問者

謝謝補充說明,非常感謝!
2016-06-22 回復(fù) 有任何疑惑可以回復(fù)我~
#2

helloworld2008 回復(fù) 紅袖侍讀 提問者

嘿嘿。共同進步~
2016-06-23 回復(fù) 有任何疑惑可以回復(fù)我~

是原始的
對象之間的判斷是用==號,而equals方法是用來判斷字符串中的內(nèi)容是否相等。

不知對否,第一次回答問題。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

紅袖侍讀 提問者

equas當(dāng)然也用來判斷對象啊,不然為什么要重寫呢。這個道理我已經(jīng)明白了,equals如果判斷基本簡單類型,像字符串這種,是能給出準(zhǔn)確判斷的, 所以if (this.name.equals(cr.name)) 這條語句執(zhí)行結(jié)果是正確沒問題的,只有碰到類對象這種復(fù)雜類型,才需要重寫,因為原始的equals和==號一樣,對類對象來說只能判斷二者在內(nèi)存中的地址而非內(nèi)容,當(dāng)我們需要對對象里的內(nèi)容判斷是否一致時它們都只能給出false的結(jié)果,因此這種情況下必須對equals重寫,而==號就沒轍了,似乎沒有別的辦法讓==號判斷類對象內(nèi)容的一致
2016-06-15 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

equals里面的equals為啥work?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號