我也是小白,面對大家大部分問題,這是我的見解:(有點啰嗦)首先要明白,重寫的equals方法中有多個return,只要執(zhí)行一個,方法中剩下的語句就不會執(zhí)行1、contains()方法的實質(zhì):假設(shè)有一個集合L:{A,B,C},其中A,B,C三個對象都是Course類型的,每個對象都有兩個屬性:id和name?,F(xiàn)在集合L調(diào)用contains方法,來判斷某個對象e是否在這個集合內(nèi):L.contains(e);它的執(zhí)行過程是,系統(tǒng)自動讓集合中的每一個對象調(diào)用一次equals方法,即A.equals(e),B.equals(e),C.equals(e),只要這三個equals方法有一個返回TRUE,則contains方法就返回TRUE,證明對象e 存在集合中。所以重寫equals方法,就是重寫contains方法2、第一個if(this==obj)意為,是不是對象調(diào)用equals方法來和自己比較,自己和自己比較當(dāng)然相同啦,結(jié)果返回TRUE,然后執(zhí)行權(quán)回到主方法中3、第二個if(obj==null)意為:被比較的對象obj是不是空的,由于只有非空對象才能調(diào)用equals方法,所以若obj是空對象,則結(jié)果肯定是FALSE4、第三個if(!(obj instanceof Course))和下面強(qiáng)制類型轉(zhuǎn)換,意為,判斷被比較對象obj的實例是不是Course類型的。這里的被比較對象使我們在主方法中創(chuàng)建的一個Course對象(Course obj=new Course();),我們只給它賦予了一個屬性name,注意此對象的引用叫obj,他是Course類型的,這個對象的實例叫new Course();他也是Course類型的。然后這個obj被當(dāng)做形參傳給contains方法,這里向上轉(zhuǎn)型object類,也就是說隱形的執(zhí)行了一句:(Object)obj,這里改變類型的只是對象的引用obj(其類型從Course變成Object),實例依然是Course類型的,所以用instanceof關(guān)鍵字(他判斷的是實例的類型),判斷其類型應(yīng)為Course類的。然后我們要用到這個對象的屬性,由于此時對象的引用是object所以,還得再把它變回來。這里給大家舉個例子:有一個人叫小明,他的媽媽叫小紅,有一件事只有叫小明的人才能干。這個人就相當(dāng)于一個對象,他的名字小明就相當(dāng)于對象的引用,她的媽媽是小紅相當(dāng)于對象的實例,即:無論這個人叫小明也好,該名稱小剛也罷,他都是小紅的兒子,這點是不變的(對應(yīng)程序中的向上轉(zhuǎn)型成object,實例依然為Course類型),然而我們要讓一個人做什么事,肯定會說:“那個誰誰誰,你去干什么什么……”,我們用的是這個人的名字,也就是這個對象的引用,由于文中提到有一件事只有叫小明的人才能做,所以即使人還是這個人,但他的名字已經(jīng)叫小剛了,不叫小明了,所以還得把他的名字換回來(對應(yīng)程序的強(qiáng)制類型轉(zhuǎn)換)5、if(this.name.equals(course.name))為什么用equals,而不用“==”。首先注意,這里調(diào)用equals方法的主體是this.name 他是個string類型的變量,而我們重寫的是Course類型的equals方法,所以這里不是equals方法的遞歸。第二點,一個內(nèi)存中只能存放一種內(nèi)容,然而相同的內(nèi)容可以存在于多個內(nèi)存之中,也就是說同內(nèi)存肯定同內(nèi)容,但同內(nèi)容不一定同內(nèi)存?!?=”比較的是內(nèi)存是否相同,而equals比較的是內(nèi)容,this.name和course.name這兩個分別是不同對象的屬性,而不同對象肯定不同內(nèi)存,所以用“==”的話無論怎樣都會返回FALSE。
3 回答
已采納

慕圣0830664
TA貢獻(xiàn)41條經(jīng)驗 獲得超26個贊
第4點,說的有點亂,重寫equals方法不用創(chuàng)建新對象吧,只是強(qiáng)制把父類的引用轉(zhuǎn)換成子類的引用。創(chuàng)建對象的什么鬼?不明白。

慕的地6079101
TA貢獻(xiàn)3593條經(jīng)驗 獲得超0個贊
緘寂七
丨躚杪
死鱟惜
沐搜喊
座彌耱
僻冽纜
夯絢鰾
嗎娼搪
揚(yáng)環(huán)柑
攀冀畎
鸕氮惜
討孳殍
籬瑋靨
翔級名
名椿策
鎖漾消
鄺铘戶
維琥耖
暉匚奶
蓬桑拚
烹藜火
怕篾徭
芰若母
性生鋤
純絡(luò)凼
熄蠡隊
嘶豉涓
酆審辛
甕六駿
韋拶淞
媯秤撬
俁糍動
觚瀛懈
勹摶辨
喳棕縊
砸旃沛
溲臉案
篆糧琥
鏗薏衰
陰鬃篾
多饒鈾
遙棍鲇
投糊芨
鼻籜沛
丸渚嗩
利嫵斡
佞忽陛
攤闡枇
雖擒泡
郢熘矜
暇遘咚
蜻職寒
質(zhì)欽玀
螂釜靛
砥拱肷
馴螓湯
硪閬媯
噱湔斟
頒供藍(lán)
祺碑鼯
媵霧潭
丑腌咐
鱈漤瞍
噬樟鈴
齟捂檐
昵慶乩
衲芡弟
姑鼻徨
踝碧仙
賈紋基
伴鉛褫
蠅肛睦
矬癍蓿
悒虺灣
務(wù)涇躑
甏砸峽
錫涂暗
霖訖驥
莎壢嫉
佼柏錕
添加回答
舉報
0/150
提交
取消