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

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

==與equals的區(qū)別是什么

==與equals的區(qū)別是什么

正在回答

1 回答

解釋一下==號,他比較的是一個對象在內(nèi)存中的地址值,
比如2個字符串對象
String s1 = new String("str");
String s2 = new String("str");
如果用==號比較,會返回false,因為創(chuàng)建了兩個對象,他們在內(nèi)存中地址的位置是不一樣的。

equals的情況比較復(fù)雜,它是java.lang.Object類中的一個方法。因為java中所有的類都默認(rèn)繼承于Object,所以所有的類都有這個方法。

在Object類源碼中是這樣寫的。
public boolean equals(Object obj) {
return (this == obj);
}
他同樣使用==號進行內(nèi)存地址的比較。但是許多java類中都重寫了這個方法,比如String。
public boolean equals(Object anObject) {
if (this == anObject) {
? ? return true;
}
if (anObject instanceof String) {
? ? String anotherString = (String)anObject;
? ? int n = count;
? ? if (n == anotherString.count) {
?char v1[] = value;
?char v2[] = anotherString.value;
?int i = offset;
?int j = anotherString.offset;
?while (n-- != 0) {
? ? ?if (v1[i++] != v2[j++])
? return false;
?}
?return true;
? ? }
}
return false;
? ?}

String里的方法,如果==號比較不相等,還會進行一下值的比較。
所以equals方法具體的作用要看當(dāng)前的那個類是如何實現(xiàn)重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。

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

pretty_sunshine 提問者

太感謝了,這么詳細(xì)
2015-04-07 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

==與equals的區(qū)別是什么

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

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

幫助反饋 APP下載

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

公眾號

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