課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
有個疑問,重寫equals方法后,總是返回一個true值,也就是說無論怎么比較他都是true值,并不是兩個對象指向同一個內(nèi)存空間了,那么比較還有什么意義呢。
2016-09-04
源自:Java入門第二季 升級版 9-9
正在回答
你理解的IF有問題,IF是當判斷條件滿足時輸出返回值;
所以,老師的語句理解起來就是;
1(this==obj)判斷兩個對象是否指向同一對象,若是則不用后續(xù)判斷直接輸出 true;2.當前面條件不成立時(this和obj指向不同的地址)進行判斷(obj==new)是否成立,若成立則不需要后續(xù)判斷直接輸出 false(因為你不是傻傻的在空的對象里去和空對象判斷吧)3.當前面IF不成立時執(zhí)行(getClass!=obj.getClass),若if成立則直接輸出 false(屬性的數(shù)量和類別都不同就不用考慮值是否相同了,走的路都不一樣你還想兩個人的人生一樣嗎?)4.若前面if不成立則將obj轉(zhuǎn)化為dog確認(age!=other)是否成立(若前面if不成立則說明是不同的地址,且obj對象不是空的,且兩個對象的類型一致)若成立輸出false;若不成立恭喜你滿足以上條件就可以定論兩個對象的屬性值一樣還是指向不同的地址!
純手打,滿意給個最佳答案。0.0
應(yīng)該是理解不同吧,可能那個重寫只是將equals的方法的功能換成判斷兩個對象的值是不是相同!并沒有說讓兩個對象指向同一個地址!
這是我截圖老師的代碼,圖中畫紅圈的true改成false后在運行結(jié)果就是打印出兩個對象是不同的,也就是說方法重寫只是將equal方法返回值改了而不是讓兩個對象指向同一個地址
截圖在哪,沒看到啊
陸星崖 提問者
你這樣的疑問我想想不出來你的錯誤在哪里,想看你的代碼然后再可以一起幫你探討下
你確定怎么比較都是true?會不會是你代碼有問題?
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙
1 回答關(guān)于equals( )方法重寫的疑問?
4 回答關(guān)于重寫equals()方法的疑問
1 回答關(guān)于equal方法中的getClass()
3 回答方法重寫的疑問
2 回答關(guān)于方法的重寫修飾詞問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-02-21
你理解的IF有問題,IF是當判斷條件滿足時輸出返回值;
所以,老師的語句理解起來就是;
1(this==obj)判斷兩個對象是否指向同一對象,若是則不用后續(xù)判斷直接輸出 true;2.當前面條件不成立時(this和obj指向不同的地址)進行判斷(obj==new)是否成立,若成立則不需要后續(xù)判斷直接輸出 false(因為你不是傻傻的在空的對象里去和空對象判斷吧)3.當前面IF不成立時執(zhí)行(getClass!=obj.getClass),若if成立則直接輸出 false(屬性的數(shù)量和類別都不同就不用考慮值是否相同了,走的路都不一樣你還想兩個人的人生一樣嗎?)4.若前面if不成立則將obj轉(zhuǎn)化為dog確認(age!=other)是否成立(若前面if不成立則說明是不同的地址,且obj對象不是空的,且兩個對象的類型一致)若成立輸出false;若不成立恭喜你滿足以上條件就可以定論兩個對象的屬性值一樣還是指向不同的地址!
純手打,滿意給個最佳答案。0.0
2016-09-13
應(yīng)該是理解不同吧,可能那個重寫只是將equals的方法的功能換成判斷兩個對象的值是不是相同!并沒有說讓兩個對象指向同一個地址!
2016-09-04
2016-09-04
截圖在哪,沒看到啊
2016-09-04
你這樣的疑問我想想不出來你的錯誤在哪里,想看你的代碼然后再可以一起幫你探討下
2016-09-04
你確定怎么比較都是true?會不會是你代碼有問題?