java學習中,object 對象的使用(toString、equals、hashCode)(java 學習中的小記錄)

來源:互聯網
上載者:User

標籤:nbsp   str   tin   als   ctr   div   package   建立   else   

java學習中,object 對象的使用(java 學習中的小記錄)王可利(Star·星星)

 

object 對象(參考API學習

重點掌握三個方法:

1.toString 返回該對象的字串表示。

2.equals(object obj)指示其他某個對象是否與這個對象相等。

3.hashCode() 返回對象的雜湊碼。

詳見代碼的注釋分析(一個是Person類重寫方法,一個是Star類使用方法)

 

Star類代碼:

 

 1 package study; 2  3 public class star { 4     public static void main(String[] args) {     5          6         //建立object對象 7         Object o = new Object(); 8          9         //1.toString10         String str = o.toString();11         System.out.println(str);//[email protected]  列印的是類的全名+地址12         System.out.println(o);//[email protected] 13         //println(object o) 內部實現應該是 o.toString14         //Ctrl + 滑鼠左鍵看源碼    ,源碼的包是 src壓縮包 jdk裡面15         16         //需求:有一個Person類   有兩個屬性name、age,現在想要在列印Person對象的時候直接輸出name和age。17         Person p = new Person("星星",12);18         System.out.println(p);19         //列印上面的類的全名+地址 沒有什麼意義20         //一般在類中都會重寫toString方法。21         22         //2.equals :用來比較兩個對象 是否是同一個對象,實際上是比較兩個對象的地址值。23         Object o1 = new Object();24         Object o2 = new Object();25         Object o3 = o1;26         System.out.println(o1.equals(o2));//false27         System.out.println(o1.equals(o3));//true28         29         Person p1 = new Person("小星星", 15);30         Person p2 = new Person("小星星", 15);31         //描述的就是一個對象,但是記憶體中是兩個對象。32         //需求equals來比較,如果我描述的是同一個對象就列印true,否則false33         //重寫equals方法34         System.out.println(p1.equals(p2));35         36         //Api 裡面當此方法被重寫時,通常 有必要重寫hashCode方法,以維護hashCode方法的常規協定,該協定聲明相等的對象必須要有相等的雜湊碼37         System.out.println(p1.hashCode());38         System.out.println(p2.hashCode());39    }40 }

 

 

Person類代碼:

 

 1 package study; 2  3 import javax.print.attribute.HashAttributeSet; 4  5 public class Person { 6     String name; 7     int age; 8     public Person(String name,int age) { 9         this.name = name;10         this.age = age;11     }12     13     //重寫toSting方法14     @Override15     public String toString() {16         // TODO Auto-generated method stub17         18         return "name  = "+name+" age = "+age;19     }20     21     22     //重寫equals方法23     @Override24     public boolean equals(Object obj) {25         // TODO Auto-generated method stub26         Person p = null;27         if (obj instanceof Person) {28             //多態需要強轉,父類不能訪問子類特有的屬性29             p =(Person)obj;30             if (p.name.equals(this.name)) {31                 return true;//名字一樣是對的32             }else{33                 return false;//名字不一樣不是一個對象34             }35         }else{36         return false;//不是這個類是錯的37     }38 }39   //重寫雜湊碼 hashCode40     @Override41     public int hashCode() {42         43         return this.name.hashCode();44     }45 }46      

 

java學習中,object 對象的使用(toString、equals、hashCode)(java 學習中的小記錄)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.