重寫tostring和equals方法

重寫tostring和equals方法

ID:14283325

大?。?1.50 KB

頁數(shù):6頁

時間:2018-07-27

重寫tostring和equals方法_第1頁
重寫tostring和equals方法_第2頁
重寫tostring和equals方法_第3頁
重寫tostring和equals方法_第4頁
重寫tostring和equals方法_第5頁
資源描述:

《重寫tostring和equals方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、重寫ToString和equals方法一、重寫toString()方法為什么要重寫toString()方法在Object類里面定義toString()方法的時候返回的對象的哈希code碼,這個haxicode碼不能簡單明了的表示出對象的屬性。所以要重寫toString()方法。當需要將一個對象輸出到顯示器時,通常要調(diào)用他的toString()方法,將對象的內(nèi)容轉(zhuǎn)換為字符串.java中的所有類默認都有一個toString()方法默認情況下System.out.println(對象名)或者System.out.println(對象名.toString

2、())輸出的是此對象的類名和此對象對應(yīng)內(nèi)存的首地址如果想自定義輸出信息必須重寫toString()方法注意事項1.必須被聲明為public2.返回類型為String3.方法的名稱必須為toString,且無參數(shù)4.方法體中不要使用輸出方法System.out.println()二、重寫equals()方法為什么要重寫equals()方法在Object類里面定義的equals比較的是對象的引用是否指向同一塊內(nèi)存地址。一般情況下比較兩個對象時比較他的值是否一致,所以要進行重寫。重寫之后是為了比較兩個對象的value值是否相等。特別指出,利用equal

3、s比較八大包裝對象(如int,float等)和String類(因為該類已重寫了equals和hashcode方法)對象時,默認比較的是值,在比較其它對象都是比較的引用地址。注意事項重寫equals必須注意:*1自反性:對于任意的引用值x,x.equals(x)一定為true*2對稱性:對于任意的引用值x和y,當x.equals(y)返回true,y.equals(x)也一定返回true*3傳遞性:對于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返回tru

4、e*4一致性:對于任意的引用值x和y,如果用于equals比較的對象信息沒有被修改,*多次調(diào)用x.equals(y)要么一致地返回true,要么一致地返回false*5非空性:對于任意的非空引用值x,x.equals(null)一定返回false一、示例1.重寫前面定義的“Person”類和“Student”類的toString及equals方法,并編程測試。程序如下:classPerson{inti;Person(){}Person(inti){this.i=i;}publicStringtoString(){return"我叫Mary";}p

5、ublicbooleanequals(Objectobj){Personp1=(Person)obj;if(this.i==p1.i)returntrue;elsereturnfalse;}}classStudentextendsPerson{intx,y;Student(intx,inty){this.x=x;this.y=y;}publicStringtoString(){return"我是計算機系計科09級學生";}publicbooleanequals(Objectobj){Students1=(Student)obj;if(this.i

6、==s1.i)returntrue;elsereturnfalse;}}publicclassTestPerson{publicstaticvoidmain(Stringargs[]){Personp1=newPerson(2);Personp2=newPerson(2);Students1=newStudent(3,4);Students2=newStudent(3,4);System.out.println(p1.equals(p2));System.out.println(s1.equals(s2));System.out.println(

7、p1);System.out.println(s1);}}運行結(jié)果:2.根據(jù)上面的程序,構(gòu)造“Teacher”類,繼承“Person”類,要求:(1)增加“職稱(String)”屬性;(2)具有和“Student”類類似的構(gòu)造重載方法;(3)重寫“Person”類的info()方法,增加“職稱”信息。程序如下:classPerson{Stringname;longid;intage;Person(){}Person(Stringname,longid,intage){this.name=name;this.id=id;this.age=age;}

8、voidinfo(){System.out.println("我的信息是:"+"姓名="+name+";"+"證件號="+id+";"+

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。