課程
/后端開發
/Java
/Java入門第二季 升級版
兩個類都重寫完了
2018-08-06
源自:Java入門第二季 升級版 9-9
正在回答
因為開辟了兩個不同的內存空間。
兩個類都重寫完了是什么意思?不是只需要重寫equals方法么?非引用類型equals和==是相同的,都是進行地址對比。除非你自己重寫了equals方法。使他變成值對比。
public?boolean?equals(Object?anObject)?{??
????????if?(this?==?anObject)?{??
????????????return?true;??
????????}??
????????if?(anObject?instanceof?String)?{??
????????????String?anotherString?=?(String)anObject;??
????????????int?n?=?value.length;??
????????????if?(n?==?anotherString.value.length)?{??
????????????????char?v1[]?=?value;??
????????????????char?v2[]?=?anotherString.value;??
????????????????int?i?=?0;??
????????????????while?(n--?!=?0)?{??
????????????????????if?(v1[i]?!=?v2[i])??
????????????????????????return?false;??
????????????????????i++;??
????????????????}??
????????????????return?true;??
????????????}??
????????return?false;??
????}??
這是string類型系統默認的重寫equals,把對象內容轉換為數組遍歷對比值是否相同。也就是說非引用類型,==和equals是一樣的都是地址對比。想要對比值就要自己重新寫方法,而string引用類型已經重寫好了。
new 一個對象 就開辟一個新的內存空間
重寫后比較的不應該是值嗎
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答為什么我這里兩對象不同類型相同屬性的值用equals()方法判斷是相同的呢?
1 回答我這個的同一個類的兩個對象的引用輸入怎么是相同的?
2 回答為什么最后顯示兩個對象是相同的
2 回答兩個不同的包中類名是相同的,我如何在同一個類中用?
4 回答如視頻教程,若我用父類animal創建一個對象dog,,用子類dog創建一個dog2,并對兩個對象的name和age賦相同的值,用equal方法對比時為什么顯示不相同?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-08-07
因為開辟了兩個不同的內存空間。
2018-08-13
兩個類都重寫完了是什么意思?不是只需要重寫equals方法么?非引用類型equals和==是相同的,都是進行地址對比。除非你自己重寫了equals方法。使他變成值對比。
public?boolean?equals(Object?anObject)?{??
????????if?(this?==?anObject)?{??
????????????return?true;??
????????}??
????????if?(anObject?instanceof?String)?{??
????????????String?anotherString?=?(String)anObject;??
????????????int?n?=?value.length;??
????????????if?(n?==?anotherString.value.length)?{??
????????????????char?v1[]?=?value;??
????????????????char?v2[]?=?anotherString.value;??
????????????????int?i?=?0;??
????????????????while?(n--?!=?0)?{??
????????????????????if?(v1[i]?!=?v2[i])??
????????????????????????return?false;??
????????????????????i++;??
????????????????}??
????????????????return?true;??
????????????}??
????????}??
????????return?false;??
????}??
這是string類型系統默認的重寫equals,把對象內容轉換為數組遍歷對比值是否相同。也就是說非引用類型,==和equals是一樣的都是地址對比。想要對比值就要自己重新寫方法,而string引用類型已經重寫好了。
2018-08-08
new 一個對象 就開辟一個新的內存空間
2018-08-06
重寫后比較的不應該是值嗎