28 Object類

28 Object類

含義

任何類的直接父類或間接父類

常用操作(被子類重寫的方法)

1.toString方法

對於引用數據類型,打印變量名的時候自動調用toString方法,默認打印的是地址,

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
        //默認打印的是地址
}

如果不想打印地址,那麼就在相應的子類裏面重寫子類

public class Student {
    private  String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}
public class TestStudent {
    public static void main(String[] args) {
        Student student=new Student("張三");
        System.out.println(student);
    }
}

沒有重寫toString方法時,默認打印的是地址


重寫toString方法時,打印的是裏面的內容

2.equals方法

本質

調用(如果是基本數據類型,則比較內容,不是則默認比較地址,例如bject的equals源碼如下:)

 public boolean equals(Object obj) {
        return (this == obj);
}

但String類(final數組)中的equals方法是重寫了Object的equals方法,比較是其中每個字符的內容

  public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

3.clone方法(淺拷貝---只會拷貝引用地址)

用途:使一個新對象中有已經建立對象的數據內容(克隆)

在object類中,clone方法的訪問權限是protectd

  protected native Object clone() throws CloneNotSupportedException;

子類要想調用clone方法,必須要有以下步驟

1.extends Object

2.且實現Cloneable接口

3.重寫(override)clone方法(Alt+Enter快捷鍵)

4.調用處處理重寫clone方法的throws拋出的CloneNotSupportedException異常

public class Student extends Object implements Cloneable{
    private  String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class TestStudent {
    public static void main(String[] args) {
        Student student=new Student("張三");
        System.out.println("student學生的信息爲: "+student);
        //try...catch用來接收調用clone()方法時,通過throws拋過來的異常
        try {
              Student student1=(Student) student.clone();//想把student對象裏面的信息賦值給student1
            System.out.println("student1學生的信息爲: "+student1);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();//打印異常處理的信息
        } finally {

        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章