Object類

茂密的毛髮發表於2021-01-02

JAVA的類主要劃分為三種
(1)JDK提供的官方類庫
(2)第三方提供的類庫(工具、框架)
(3)開發自定義類

Object

object是JDK中的一個類,是所有類的直接父類或間接父類

重寫Object類

主要講toString()、equals()、hashCode()

public String toString() :以字串的形式返回物件的資訊;
public boolen equals(object obj) :判斷兩個物件是否相等;
public native int hashCode(): 返回物件的hash值

1.toString()

public class People {
    private int id;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "人類\t" +
                "編號=" + id +
                ", 姓名=" + name  ;
    }
}
public class Test {
    public static void main(String[] args) {
        People people = new People();
        people.setId(1);
        people.setName("胡一");
        System.out.println(people);
    }
}

2.equals()
==:比較的永遠是變數的值(物件的儲存地址)
equals:判斷兩個物件是否相等
equals重寫:

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        People people = (People) o;
        return id == people.id &&
                Objects.equals(name, people.name);
    }
People people = new People();
        people.setId(1);
        people.setName("胡一");
        System.out.println(people);
        People people1 = new People();
        people.setId(1);
        people.setName("胡二");
        Integer a =1;
        Integer b = 1;
        System.out.println(people.equals(people1));  //false
        System.out.println(a.equals(b));  //true

3.hashCode
用來獲取物件的雜湊值,雜湊值是根據物件的記憶體地址和物件的資訊對映出來的一個數值。
效率高於equals

任何兩個物件的記憶體地址肯定不一樣,但實際開發如果兩個物件的屬性值完全一樣的時候就認為同一個物件,那麼雜湊值也相同。

實際開發通過equals和hashCode一同使用來判斷兩個物件是否相同,首先判斷兩個物件的雜湊值是否相同,若雜湊值不同則一定不同,若雜湊值相同可能物件不同,這時需要通過equals來進一步判斷,最終得出是否相等。

   @Override
    public int hashCode() {
        return this.id*this.name.hashCode();
    }

相關文章