課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
兩個(gè)類都重寫完了
2018-08-06
源自:Java入門第二季 升級版 9-9
正在回答
因?yàn)殚_辟了兩個(gè)不同的內(nèi)存空間。
兩個(gè)類都重寫完了是什么意思?不是只需要重寫equals方法么?非引用類型equals和==是相同的,都是進(jìn)行地址對比。除非你自己重寫了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類型系統(tǒng)默認(rèn)的重寫equals,把對象內(nèi)容轉(zhuǎn)換為數(shù)組遍歷對比值是否相同。也就是說非引用類型,==和equals是一樣的都是地址對比。想要對比值就要自己重新寫方法,而string引用類型已經(jīng)重寫好了。
new 一個(gè)對象 就開辟一個(gè)新的內(nèi)存空間
重寫后比較的不應(yīng)該是值嗎
舉報(bào)
課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙
2 回答為什么我這里兩對象不同類型相同屬性的值用equals()方法判斷是相同的呢?
1 回答我這個(gè)的同一個(gè)類的兩個(gè)對象的引用輸入怎么是相同的?
2 回答兩個(gè)不同的包中類名是相同的,我如何在同一個(gè)類中用?
2 回答為什么最后顯示兩個(gè)對象是相同的
4 回答如視頻教程,若我用父類animal創(chuàng)建一個(gè)對象dog,,用子類dog創(chuàng)建一個(gè)dog2,并對兩個(gè)對象的name和age賦相同的值,用equal方法對比時(shí)為什么顯示不相同?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-08-07
因?yàn)殚_辟了兩個(gè)不同的內(nèi)存空間。
2018-08-13
兩個(gè)類都重寫完了是什么意思?不是只需要重寫equals方法么?非引用類型equals和==是相同的,都是進(jìn)行地址對比。除非你自己重寫了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類型系統(tǒng)默認(rèn)的重寫equals,把對象內(nèi)容轉(zhuǎn)換為數(shù)組遍歷對比值是否相同。也就是說非引用類型,==和equals是一樣的都是地址對比。想要對比值就要自己重新寫方法,而string引用類型已經(jīng)重寫好了。
2018-08-08
new 一個(gè)對象 就開辟一個(gè)新的內(nèi)存空間
2018-08-06
重寫后比較的不應(yīng)該是值嗎