在Java中對(duì)于equals方法來(lái)說(shuō)雹仿,一般人都會(huì)這樣說(shuō),==比較的是內(nèi)存地址,equals是值 其實(shí)這樣說(shuō)是不準(zhǔn)確的债沮。關(guān)系操作符比較的是什么,在《Thinking in java》一書(shū)中是這樣說(shuō)的:關(guān)系操作符生成的是一個(gè)boolean結(jié)果本鸣,它們計(jì)算的是操作數(shù)的值之間的關(guān)系疫衩。看似簡(jiǎn)單荣德,實(shí)則需要用心體會(huì)闷煤。
示例1代碼所示 輸出結(jié)果全是true。
示例2涮瞻,創(chuàng)建B類(lèi)鲤拿,重寫(xiě)無(wú)參構(gòu)造方法為其賦值,然后比較得知其結(jié)果為false,署咽。說(shuō)明原equals方法比較的還是內(nèi)存地址
我們要達(dá)到我們自己預(yù)期的功能 則必須重寫(xiě)equals方法近顷,equlas屬于object類(lèi),所以任何類(lèi)都可以重寫(xiě)宁否,如下:equals比較的則是值
無(wú)論你是大牛還是小白窒升,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!很多干貨和技術(shù)資料分享慕匠!有導(dǎo)師分享知識(shí)點(diǎn)饱须,也可以直接問(wèn),每天學(xué)習(xí)的都不一樣台谊,推薦一個(gè)學(xué)JAVA的技術(shù)分享裙【 一三三蓉媳,九三零譬挚,六九三】,裙內(nèi)有開(kāi)發(fā)工具督怜,視頻殴瘦,系列資料等我們利用多態(tài)的特性再次重寫(xiě)equals方法 新建C類(lèi)繼承B類(lèi) ,運(yùn)行代碼可知号杠,輸出結(jié)果還是true蚪腋。這是比較兩個(gè)不同類(lèi)實(shí)例對(duì)象的值
注意的是對(duì)象向上轉(zhuǎn)型后是不能直接訪問(wèn)子類(lèi)成員的,必須強(qiáng)轉(zhuǎn)成子類(lèi)才可以訪問(wèn)姨蟋,這也體現(xiàn)出java語(yǔ)言的嚴(yán)謹(jǐn)性屉凯。