目錄
toString:
代碼案例:
equals:
代碼案例:
toString:
概念:拼接物件的地址值;toString()方法用于回傳表示物件值的字串(回傳的是String物件),
快捷寫法:Alt+Insert,直接會顯示toString的方法,選取需要回傳的物件就行,
代碼案例:
/*
定義一個person類,屬性如下:
(1)身份證號,性別,姓名,年齡,戶籍,出生日期(Data型別,需要參考java.uitl.Data)功能:
(2)自我介紹:介紹格式:(toString)
身份證號+姓名+戶籍
(3)提供物件比較equals方法,只要身份證號+姓名相同就認為物件相等
*/
第二個小問中,自我介紹需要用到toSting的方法,看代碼:
@Override//方法重寫
public String toString() {
return "Person{" +
"ID_card='" + ID_card + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
Alt+Insert:會得到一個提示框,選取toString方法:

點擊toString,會顯示如下,因為例子題中要求比較的是
“(2)自我介紹:介紹格式:(toString)
身份證號+姓名+戶籍,”
所以,選取我們需要的三個屬性(成員變數),跳格選取ctrl+滑鼠左鍵,按住ctrl不放,點擊我們要的三個成員變數,

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

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

選取好后,next,finish,或者是直接Enter,Enter結束完成就行,
代碼就會顯示出來:對于還未深入學習,不了解多型,不了解Object的同學,我們只要知道如果快捷重寫equals的方法就好,而對于比較特殊的equals案例題方法重寫,請往下看:
@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);
}
/*
按要求實作下列問題:
1)封裝一個西游記人物類Person:包含公共屬性:姓名(name)、身高(height)、武器(weapon)、種族(race),提供修改器方法(set方法),可修改全部的屬性,再提供一個void skill()技能方法
2)創建3個類繼承Person類:Tangseng(唐僧)、Sunwukong(孫悟空)、Baigujing(白骨精),分別設定他們的種族為:人族、仙族、妖族(其他資訊自己確定),
3)創建3個物件分別列印物件資訊,按照例如:“姓名:孫悟空;種族:仙族”的格式在控制臺輸出資訊,
4)將3個子類重寫技能方法void skill(),如果是孫悟空,就列印“吃俺老孫一棒 -100”,如果是唐僧,就列印“緊箍咒 -150”,如果是白骨精,就列印“九陰白骨爪 -125”,在測驗類中呼叫這個方法,
5)重寫父類的equals方法進行判斷,如果種族屬性是人族或者仙族,則回傳true,如果是妖族,則回傳false,在測驗類中對孫悟空和唐僧進行比較,列印結果,對唐僧和白骨金進行比較,并列印結果,
*/
我們看第五個小問,
5)重寫父類的equals方法進行判斷,如果種族屬性是人族或者仙族,則回傳true,如果是妖族,則回傳false,在測驗類中對孫悟空和唐僧進行比較,列印結果,對唐僧和白骨金進行比較,并列印結果,
這里的equals方法重寫中,要求比較種族,而且有兩個物件之間的比較,所以,我們快捷的equals速寫方法,并不能滿足題意要求,
而這里,我們只學過繼承,只會Alt+Insert,快捷寫出equals方法的同學,這里的equals方法,就需要自己重新定義來寫,當然,我們運用學過的知識簡單來完成,
看代碼:
public boolean equals(Person p) {//A.equ(B)
if (this.race.equals("妖族")||p.race.equals("妖族"))
{
return false;
}else
{
return true;
}
}
通過與上述快捷equals方法比較,我們發現,對于根類Object的傳入,我們改成了一個物件類Person的傳入,
this.race代表一個物件,p.race代表一個物件,"妖族代表種族比較的具體值",
這樣我們就能很輕松的進行了兩個物件A與B的關于種族的比較,而不需要運用多型或者是其他的方法進行敲寫,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/298935.html
標籤:java
上一篇:Android面試 | 2021年中高級大廠面試題必知必會
下一篇:【演算法學習】1920. 基于排列構建陣列(java / c / c++ / python / go / rust)
