1. 程式人生 > 實用技巧 >java基礎知識--Object類

java基礎知識--Object類

1.1 概述

  java.lang.Object類是Java語言中的根類,即所有類的父類/超類/祖宗類。它中描述的所有方法子類都可以使用。在物件例項化的時候,最終找的父類就是Object。

  如果一個類沒有特別指定父類,那麼預設則繼承自Object類。

  根據JDK原始碼及Object類的API文件,Object類當中包含的方法有11個。簡述其中的兩個方法,如下:

  • public String toString():返回該物件的字串表示(物件的型別+@+記憶體地址值)。

    由於toString方法返回的結果是記憶體地址,而在開發中,經常需要按照物件的屬性得到相應的字串表現形式,因此需要時可以對它進行覆蓋重寫。

    比如:

public class Person {  
    private String name;
    private int age;

   // 重寫toString()方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } // 省略構造器與Getter Setter }
  • public boolean equals(Object obj):指示其他某個物件是否與此物件“相等”。

    a. 地址比較(預設方式)

      如果沒有覆蓋重寫equals方法,那麼Object類中預設進行==運算子的物件地址比較,只要不是同一個物件,結果必然為false。

    b. 物件內容比較(自定義方法)

      如果希望進行物件的內容比較,即所有或指定的部分成員變數相同就判定兩個物件相同,則可以覆蓋重寫equals方法。

      例如:

import java.util.Objects;

public class Person {	
	private String name;
	private int age;
	
    @Override
    public boolean equals(Object o) {
        // 如果物件地址一樣,則認為相同
        if (this == o)
            return true;
        // 如果引數為空,或者型別資訊不一樣,則認為不同
        if (o == null || getClass() != o.getClass())
            return false;
        // 轉換為當前型別
        Person person = (Person) o;
        // 要求基本型別相等,並且將引用型別交給java.util.Objects類的equals靜態方法取用結果
        return age == person.age && Objects.equals(name, person.name);
    }
}

  除以上的兩個方法外,還有clone()、finalize()、getClass()、hashCode()、notify()、notifyAll()、wait等,具體可查API。