課程
/后端開發
/Java
/Java入門第一季(IDEA工具)升級版
引用類型“==”引用類型 ? 或者 引用類型“!=”引用類型,系統會怎么判斷true 或 false呢?
2015-05-03
源自:Java入門第一季(IDEA工具)升級版 3-4
正在回答
雖然沒看懂,但還是謝謝你!菜鳥,剛開始學這些東西,我現在的理解能力一時半會還理解不了你說的,謝謝了
==號,他比較的是一個對象在內存中的地址值,比如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方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。
總被你們占用 提問者
舉報
0基礎萌新入門第一課,從Java環境搭建、工具使用、基礎語法開始
1 回答引用數據類型
4 回答引用數據類型
2 回答引用類型是啥呀
1 回答什么是引用類型啊
1 回答字符串是引用類型?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-05-03
雖然沒看懂,但還是謝謝你!菜鳥,剛開始學這些東西,我現在的理解能力一時半會還理解不了你說的,謝謝了
2015-05-03
==號,他比較的是一個對象在內存中的地址值,
比如2個字符串對象
如果用==號比較,會返回false,因為創建了兩個對象,他們在內存中地址的位置是不一樣的。
equals的情況比較復雜,它是java.lang.Object類中的一個方法。因為java中所有的類都默認繼承于Object,所以所有的類都有這個方法。
在Object類源碼中是這樣寫的。
String里的方法,如果==號比較不相等,還會進行一下值的比較。
所以equals方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。