一篇文章帶你了解java Object根類中關(guān)于toString,equals的方法
toString:
概念:拼接對(duì)象的地址值;toString()方法用于返回表示對(duì)象值的字符串(返回的是String對(duì)象)。
快捷寫法:Alt+Insert,直接會(huì)顯示toString的方法,選取需要返回的對(duì)象就行。
代碼案例:
定義一個(gè)person類,屬性如下:
(1)身份證號(hào),性別,姓名,年齡,戶籍,出生日期(Data類型,需要引用java.uitl.Data)功能:
(2)自我介紹:介紹格式:(toString)
身份證號(hào)+姓名+戶籍
(3)提供對(duì)象比較equals方法,只要身份證號(hào)+姓名相同就認(rèn)為對(duì)象相等
第二個(gè)小問中,自我介紹需要用到toSting的方法??创a:
@Override//方法重寫
public String toString() {
return "Person{" +
"ID_card='" + ID_card + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
Alt+Insert:會(huì)得到一個(gè)提示框,選取toString方法:

點(diǎn)擊toString,會(huì)顯示如下,因?yàn)槔宇}中要求比較的是
“(2)自我介紹:介紹格式:(toString)”
身份證號(hào)+姓名+戶籍?!?/p>
所以,選取我們需要的三個(gè)屬性(成員變量),跳格選取ctrl+鼠標(biāo)左鍵,按住ctrl不放,點(diǎn)擊我們要的三個(gè)成員變量。

這樣我們就能得到我們想要的toString的方法了。
equals:
概念:默認(rèn)情況下(繼承自O(shè)bject類),equals和==是一樣的(都是比較的對(duì)象的地址值)。但子類一般都要重寫這個(gè)方法。(重寫后比一般是比較對(duì)象的屬性,也就是值是否相等)。
代碼案例:
定義一個(gè)person類,屬性如下:
(1)身份證號(hào),性別,姓名,年齡,戶籍,出生日期(Data類型,需要引用java.uitl.Data)功能:
(2)自我介紹:介紹格式:(toString)
身份證號(hào)+姓名+戶籍
(3)提供對(duì)象比較equals方法,只要身份證號(hào)+姓名相同就認(rèn)為對(duì)象相等
快捷寫法:Alt+Insert:會(huì)得到一個(gè)提示框,選取equals方法:

代碼中要求身份證與姓名相同。
所以勾選選取身份證與姓名的成員變量,(當(dāng)我們需要比較哪些屬性時(shí),就選取哪些屬性(成員變量))

選取好后,next,finish,或者是直接Enter,Enter結(jié)束完成就行。
代碼就會(huì)顯示出來(lái):對(duì)于還未深入學(xué)習(xí),不了解多態(tài),不了解Object的同學(xué),我們只要知道如果快捷重寫equals的方法就好。而對(duì)于比較特殊的equals案例題方法重寫,請(qǐng)往下看:
@Override//重寫equals方法
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(ID_card, person.ID_card) &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(ID_card, name);
}
按要求實(shí)現(xiàn)下列問題:
1)封裝一個(gè)西游記人物類Person:包含公共屬性:姓名(name)、身高(height)、武器(weapon)、種族(race),提供修改器方法(set方法),可修改全部的屬性,再提供一個(gè)void skill()技能方法
2)創(chuàng)建3個(gè)類繼承Person類:Tangseng(唐僧)、Sunwukong(孫悟空)、Baigujing(白骨精),分別設(shè)置他們的種族為:人族、仙族、妖族(其他信息自己確定)。
3)創(chuàng)建3個(gè)對(duì)象分別打印對(duì)象信息,按照例如:“姓名:孫悟空;種族:仙族”的格式在控制臺(tái)輸出信息。
4)將3個(gè)子類重寫技能方法void skill(),如果是孫悟空,就打印“吃俺老孫一棒 -100”,如果是唐僧,就打印“緊箍咒 -150”,如果是白骨精,就打印“九陰白骨爪 -125”,在測(cè)試類中調(diào)用這個(gè)方法。
5)重寫父類的equals方法進(jìn)行判斷,如果種族屬性是人族或者仙族,則返回true,如果是妖族,則返回false,在測(cè)試類中對(duì)孫悟空和唐僧進(jìn)行比較,打印結(jié)果,對(duì)唐僧和白骨金進(jìn)行比較,并打印結(jié)果。
我們看第五個(gè)小問,
6)重寫父類的equals方法進(jìn)行判斷,如果種族屬性是人族或者仙族,則返回true,如果是妖族,則返回false,在測(cè)試類中對(duì)孫悟空和唐僧進(jìn)行比較,打印結(jié)果,對(duì)唐僧和白骨金進(jìn)行比較,并打印結(jié)果。
這里的equals方法重寫中,要求比較種族,而且有兩個(gè)對(duì)象之間的比較。所以,我們快捷的equals速寫方法,并不能滿足題意要求。
而這里,我們只學(xué)過(guò)繼承,只會(huì)Alt+Insert,快捷寫出equals方法的同學(xué),這里的equals方法,就需要自己重新定義來(lái)寫,當(dāng)然,我們運(yùn)用學(xué)過(guò)的知識(shí)簡(jiǎn)單來(lái)完成。
看代碼:
public boolean equals(Person p) {//A.equ(B)
if (this.race.equals("妖族")||p.race.equals("妖族"))
{
return false;
}else
{
return true;
}
}
通過(guò)與上述快捷equals方法比較,我們發(fā)現(xiàn),對(duì)于根類Object的傳入,我們改成了一個(gè)對(duì)象類Person的傳入。
this.race代表一個(gè)對(duì)象,p.race代表一個(gè)對(duì)象,"妖族代表種族比較的具體值"。
這樣我們就能很輕松的進(jìn)行了兩個(gè)對(duì)象A與B的關(guān)于種族的比較。而不需要運(yùn)用多態(tài)或者是其他的方法進(jìn)行敲寫。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
java中并發(fā)Queue種類與各自API特點(diǎn)以及使用場(chǎng)景說(shuō)明
這篇文章主要介紹了java中并發(fā)Queue種類與各自API特點(diǎn)以及使用場(chǎng)景說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring 整合 MyBatis的實(shí)現(xiàn)步驟
SpringMVC 本來(lái)就是 Spring 框架的一部分,這兩者無(wú)須再做整合,所以 SSM 整合的關(guān)鍵就是Spring對(duì)MyBatis的整合,三大框架整合完成后,將以 Spring 為核心,調(diào)用有關(guān)資源,高效運(yùn)作,這篇文章主要介紹了 Spring 整合 MyBatis的實(shí)現(xiàn)步驟,需要的朋友可以參考下2023-02-02
Java中使用Apache POI讀取word文件簡(jiǎn)單示例
這篇文章主要介紹了Java中使用Apache POI讀取word文件簡(jiǎn)單示例,本文著重介紹了一些必要條件,然后給出一個(gè)簡(jiǎn)單讀取示例,需要的朋友可以參考下2015-06-06
Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法
在Java中我們經(jīng)常需要將數(shù)組從一種類型轉(zhuǎn)換為另一種類型,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法,文中通過(guò)圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
SpringBoot整合MongoDB實(shí)現(xiàn)文件上傳下載刪除
這篇文章主要介紹了SpringBoot整合MongoDB實(shí)現(xiàn)文件上傳下載刪除的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-05-05
java實(shí)現(xiàn)區(qū)域內(nèi)屏幕截圖示例
這篇文章主要介紹了java截圖示例,需要的朋友可以參考下2014-04-04
SpringBoot中實(shí)現(xiàn)@Scheduled動(dòng)態(tài)定時(shí)任務(wù)
SpringBoot中的@Scheduled注解為定時(shí)任務(wù)提供了一種很簡(jiǎn)單的實(shí)現(xiàn),本文主要介紹了SpringBoot中實(shí)現(xiàn)@Scheduled動(dòng)態(tài)定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
maven多moudle項(xiàng)目在idea里面顯示多個(gè)root問題及解決
這篇文章主要介紹了maven多moudle項(xiàng)目在idea里面顯示多個(gè)root問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

