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

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

引用類型“==”引用類型 或者 引用類型“!=”引用類型,系統會怎么判斷true 或 false呢?

引用類型“==”引用類型 ? 或者 引用類型“!=”引用類型,系統會怎么判斷true 或 false呢?

正在回答

2 回答

雖然沒看懂,但還是謝謝你!菜鳥,剛開始學這些東西,我現在的理解能力一時半會還理解不了你說的,謝謝了

0 回復 有任何疑惑可以回復我~

==號,他比較的是一個對象在內存中的地址值,
比如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

總被你們占用 提問者

雖然沒看懂,但還是謝謝你!菜鳥,剛開始學這些東西,我現在的理解能力一時半會還理解不了你說的,謝謝了
2015-05-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第一季(IDEA工具)升級版
  • 參與學習       1167489    人
  • 解答問題       18748    個

0基礎萌新入門第一課,從Java環境搭建、工具使用、基礎語法開始

進入課程

引用類型“==”引用類型 或者 引用類型“!=”引用類型,系統會怎么判斷true 或 false呢?

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

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

幫助反饋 APP下載

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

公眾號

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