亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

==與equals的區別是什么

==與equals的區別是什么

正在回答

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方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。

1 回復 有任何疑惑可以回復我~
#1

pretty_sunshine 提問者

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

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409767    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

==與equals的區別是什么

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號