JAVA_SE基礎——60.初識Object

java是面向對象的語言,核心思想:找適合 的對象作適合 的事情:

方式一:自定義類,而後經過自定義的類建立對象。

方式二:sun提供了不少的類給我使用,咱們只須要認識這些類,咱們就能夠經過這些類建立對象了。

Object類是全部類的終極父類。 任何一個類都繼承了Object類。

 Object:全部類的根類。
    Object是不斷抽取而來,具有着全部對象都具有的共性內容。
html

class Person{
      private int age ;
      Person(int age){
             this.age = age;
      }
}

class Demo{
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);
            Person p2 = new Person(20);
            Person p3 = p1;
      
            Demo d = new Demo();

            System. out.println(p1 == p2);//false
            System. out.println(p1.equals(p2));//false
            System. out.println(p1.equals(p3));//true
            System. out.println(p1.equals(d));//false
      }
}
運行結果:

false
false
true
false


java

上面都是比較內存地址,而沒有比較年齡,然而須要比較年齡則須要重寫equals方法~this

P.S.
    ==以及Object類的equals方法默認都是根據對象的哈希值判斷兩個對象是否相等。
    能夠經過覆蓋Object的equals方法來重寫比較規則。

spa

class Person{
       private int age ;
       Person( int age){
             this.age = age;
       }
       //比較Person的年齡,是不是同齡人
       //通常都會覆蓋此方法,根據對象的特有內容,創建判斷對象是否相同的依據。
       public boolean equals(Object obj){
             if(!(obj instanceof Person))
                   throw new ClassCastException("類型錯誤");
             Person p = (Person)obj;
             return this .age == p.age;
      }
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);
            Person p2 = new Person(20);

            System. out.println(p1.equals(p2));
      }
}
運行結果:

ture

htm

class Person{
      private int age ;
      Person(int age){
             this.age = age;
      }
      public int hashCode(){
             return age ;
      }
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);

            System. out.println(p1);
            System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));
      }
}
運行結果:

Person@21對象

Person $ 21

繼承

System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));
爲了方便初學者理解上面的代碼,接下來分別對其中用到的方法進行解釋,具體以下:

1.getClass().getName()表明返回對象所屬類的類名,便是Person。內存

2.hashCode()表明返回該對象的哈希值。 (也能夠把哈希碼理解成是對象的內存地址)字符串

3.Integer.toHexString(p1.hashCode())表明將對象哈希值用16進製表現。get

其中,hashCode()是Object類中定義的一個方法,這個方法將對象的內存地址進行哈西運算,返回一個int型的哈希值


toString() : 返回該對象的字符串表示,返回一個字符串用於描述該對象的。 (返回的字符串表示: 完整類名+@+ 對象的哈希碼)



交流企鵝:654249738,和自學者交流羣:517284938

相關文章
相關標籤/搜索