1. 程式人生 > >java--面對對象之Object類

java--面對對象之Object類

string 用兩個 運算符 類的屬性 表現 size com div 自己的

一、概念

Object類是Java語言中的根類,即所有類的父類。它中描述的所有方法子類都可以使用。所有類在創建對象的時候,最終找的父類就是ObjectObject類眾多方法中,我們先學習equals方法與toString方法,其他方法後面課程中會陸續學到。

二、equals方法

技術分享圖片

equals方法,用於比較兩個對象是否相同,它其實就是使用兩個對象的內存地址在比較。Object類中的equals方法內部使用的就是==比較運算符。在開發中要比較兩個對象是否相同,經常會根據對象中的屬性值進行比較,也就是在開發經常需要子類重寫equals方法根據對象的屬性值進行比較。如下代碼演示:

 1 /*
 2      描述人這個類,並定義功能根據年齡判斷是否是同齡人
 3      由於要根據指定類的屬性進行比較,這時只要覆蓋Object中的equals方法
 4      在方法體中根據類的屬性值進行比較
 5  */
 6 class Person extends Object{
 7     int age ;
 8     //復寫父類的equals方法,實現自己的比較方式
 9     public boolean equals(Object obj) {
10         //判斷當前調用equals方法的對象和傳遞進來的對象是否是同一個
11         if(this
== obj){ 12 return true; 13 } 14 //判斷傳遞進來的對象是否是Person類型 15 if(!(obj instanceof Person)){ 16 return false; 17 } 18 //將obj向下轉型為Perosn引用,訪問其屬性 19 Person p = (Person)obj; 20 return this.age == p.age; 21 } 22 }

註意:在復寫Object中的

equals方法時,一定要註意public boolean equals(Object obj)的參數是Object類型,在調用對象的屬性時,一定要進行類型轉換,在轉換之前必須進行類型判斷。

三、toString方法

技術分享圖片

toString方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。

由於toString方法返回的結果是內存地址,而在開發中,經常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫它。

1 class Person extends Object{
2     int age ;
3     //根據Person類的屬性重寫toString方法
4     public String toString() {
5         return "Person [age=" + age + "]";
6     }
7 }

例如:

Person類

 1 public class Person {
 2     private String name;
 3     private int age;
 4     Person(){
 5         
 6     }
 7     Person(String name,int age){
 8         this.name=name;
 9         this.age=age;
10     }
11 
12     public boolean equals(Object obj) {//Object obj=new Person();
13         //調用子類都有的成員,需要向下轉型
14         if(obj==null){
15             return false;
16         }
17         if(obj==this){
18             return true;
19         }
20         if(obj instanceof Person ){
21             Person p=(Person)obj;
22             return this.age==p.age;
23         }
24         return false;
25     }
26     @Override
27     public String toString() {
28         return "Person [name=" + name + ", age=" + age + "]";
29     }
30     
31     /*public String toString() {
32         
33         return "name:"+name+",age:"+age;
34     }*/
35     
36 }

測試類

 1 public class Demo01 {
 2 
 3     public static void main(String[] args) {
 4         Person p1=new Person("熊大",2);
 5         Person p2=new Person("熊二",2);
 6         ArrayList<String> list=new ArrayList<String>();
 7         System.out.println(p1==p2);           //false
 8         System.out.println(p1.equals(list));  //false
 9         System.out.println(p1);//默認打印tostring()   子類方法重寫後  就變成子類重寫方法
10         System.out.println(p2);
11     }

java--面對對象之Object類