課程
/后端開發
/Java
/Java入門第三季
==與equals的區別是什么
2015-04-06
源自:Java入門第三季 6-1
正在回答
解釋一下==號,他比較的是一個對象在內存中的地址值,比如2個字符串對象String s1 = new String("str");String s2 = new String("str");如果用==號比較,會返回false,因為創建了兩個對象,他們在內存中地址的位置是不一樣的。equals的情況比較復雜,它是java.lang.Object類中的一個方法。因為java中所有的類都默認繼承于Object,所以所有的類都有這個方法。在Object類源碼中是這樣寫的。public boolean equals(Object obj) { return (this == obj);}他同樣使用==號進行內存地址的比較。但是許多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方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。
pretty_sunshine 提問者
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
4 回答equals 與 == 的區別
3 回答null與長度為0的區別是什么
1 回答HashSet與HashMap有什么區別?
3 回答arraylist與linkedList的區別
1 回答StringBuilder與StringBuffer的區別
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-04-07
解釋一下==號,他比較的是一個對象在內存中的地址值,
比如2個字符串對象
String s1 = new String("str");
String s2 = new String("str");
如果用==號比較,會返回false,因為創建了兩個對象,他們在內存中地址的位置是不一樣的。
equals的情況比較復雜,它是java.lang.Object類中的一個方法。因為java中所有的類都默認繼承于Object,所以所有的類都有這個方法。
在Object類源碼中是這樣寫的。
public boolean equals(Object obj) {
return (this == obj);
}
他同樣使用==號進行內存地址的比較。但是許多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方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。