Java學習:Object類

來源:互聯網
上載者:User

標籤:src   ret   obj   open   注意   shc   字典   通過   快捷   

Object:是所有類的根類。所有的類都直接或者間接的繼承自該類
1
建立學生對象列印學生對象的地址值(本質上是將地址通過雜湊演算法算出的雜湊值)
同一個對象的雜湊值肯定是一樣的。
雜湊值相同的對象的地址值未必一樣。
新華字典,zhu -- 456(雜湊值) -- 豬(第三個),朱(第5個),珠(第9個)

2
為什麼重寫toString()方法
預設情況下,列印的是對象的字串表示,意義不大。
包名...類名[email protected]+該對象的雜湊值的十六進位
所以,我們建議,所有子類重寫該方法。
自動產生即可。
表示該對象的資料:
[類名 成員變數1=資料值1,成員變數2=資料值2,...]

 1 class Student{ 2     //姓名和年齡 3     private String name; 4     private int age; 5     //自動產生的快速鍵shift+alt+s 6     public String getName() { 7         return name; 8     } 9     public void setName(String name) {10         this.name = name;11     }12     public int getAge() {13         return age;14     }15     public void setAge(int age) {16         this.age = age;17     }18     public Student(String name, int age) {19         super();20         this.name = name;21         this.age = age;22     }23     public Student() {24         super();25     }26     //重寫Object類中的toString方法,自動產生即可27 28     public String toString() {29         return "Student [name=" + name + ", age=" + age + "]";30     }31 32 }33 34 35 public class StudentDemo {36     public static void main(String[] args) {37         //建立學生對象,並列印學生對象38         Student s1 = new Student("林志玲", 50);39         Student s2 = new Student("劉德華", 55);40         41         //列印兩個學生對象42         System.out.println(s1);//[email protected]43         System.out.println(s2);//[email protected]44         /**45          * [email protected],我們之前稱他為地址值其實是不夠準確的,46          * 因為當時為了讓大家好理解,我們就暫且稱他為地址值。47          * 注意:他其實說白了是一個對象的字串表示形式--格式:包名+類名[email protected]+該對象的雜湊碼值48          * 49          * 什麼是雜湊嗎值呢?50          * 有一種雜湊演算法,可以將對象的雜湊嗎值算出來,同一個對象的雜湊嗎值是一樣的,51          * 但是記住,雜湊嗎值一樣不代表就是同一個對象52          * 53          * 舉例:新華字典54          * zhu  465頁(雜湊嗎值)          豬 (第1個)                住(第四個)                   祝(第六個)55          */56     }
重寫toString()方法

運行結果如下:

Student [name=林志玲, age=50]
Student [name=劉德華, age=55]



3
equals():
預設情況下,比較的是地址值。沒有意義。
所以,建議子類重寫該方法。
自動產生即可。
這個產生的方法作用是比較對象的成員變數值是否相同。

 1 class Student2{ 2     private String name; 3     private int age; 4     public Student2(String name, int age) { 5         super(); 6         this.name = name; 7         this.age = age; 8     } 9     public Student2() {10         super();11         // TODO Auto-generated constructor stub12     }13     public String getName() {14         return name;15     }16     public void setName(String name) {17         this.name = name;18     }19     public int getAge() {20         return age;21     }22     public void setAge(int age) {23         this.age = age;24     }25     26     public int hashCode() {27         final int prime = 31;28         int result = 1;29         result = prime * result + age;30         result = prime * result + ((name == null) ? 0 : name.hashCode());31         return result;32     }33     34     //equals()方法在這裡比較的是對象的成員變數值,當一個對象和另一個對象的成員變數值完全相同的時候,equals()35     //就可以認為這兩個對象時同一個對象36 37     public boolean equals(Object obj) {38         if (this == obj)39             return true;40         if (obj == null)41             return false;42         if (getClass() != obj.getClass())43             return false;44         Student2 other = (Student2) obj;45         if (age != other.age)46             return false;47         if (name == null) {48             if (other.name != null)49                 return false;50         } else if (!name.equals(other.name))51             return false;52         return true;53     }54 }55 56 57 public class ObjectDemo {58     public static void main(String[] args) {59         //建立兩個學生對象60         Student2 s1 = new Student2();61         Student2 s2 = new Student2();62         //equals()方法是Object類中的方法,預設比較的是對象的地址值63         System.out.println(s1.equals(s2));64         System.out.println(s1==s2);// ==完全就可以比較地址值65         66         //建立兩個學生對象67         Student2 s3 = new Student2("劉德華", 55);68         Student2 s4 = new Student2("劉德華", 55);69         System.out.println(s3.equals(s4));70         71     }
equals()方法示範

運行結果如下:

true
false
true

 

Java學習:Object類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.