1. 程式人生 > 其它 >Java學習筆記88——Object類—類的最終寫法

Java學習筆記88——Object類—類的最終寫法

Object類——類的最終寫法

​ public String toString()返回物件的字串表示形式。
​ 一般來說, toString方法返回一個“textually代表”這個物件的字串。
​ 結果應該是一個簡明扼要的表達,容易讓人閱讀。 建議所有子類覆蓋此方法。
​ 該toString類方法Object返回一個由其中的物件是一個例項,
​ 該符號字元`的類的名稱的字串@ ”和物件的雜湊碼的無符號的十六進位制表示。
​ 換句話說,這個方法返回一個等於下列值的字串:
​ getClass().getName() + '@' + Integer.toHexString(hashCode())

​ Integer類中有一個toHexString方法將雜湊值轉換成地址值
​ public static String toHexString(int i)
​ 返回整數引數的字串表示形式,作為16位中的無符號整數。

​ 我們雖然掌握了toString()的方法使用,但是呢列印的結果是一個地址值,我們拿到地址值是沒有意義的

​ 我們正常列印一個物件,其實是想看該物件中的成員變數的值。
​ 又因為toString()方法的返回值是String型別,並且屬於Object類中的
​ 而Object類是所有類的父類,那麼我們自己定義類的時候,就可以重寫該方法,重寫裡面的實現。
​ 將來呼叫toString()方法的時候,嚴格遵循編譯看左,執行看右,所以呼叫的是重寫後的方法。

類最終寫法:4.0版本:
​ 成員變數:private
​ 構造方法:無參,有參
​ 成員方法:getXxx()和setXxx(),..
​ toString():自動生成即可(Code快捷鍵)

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

    public Student3() {
    }

    public Student3(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
//手動重寫
//    @Override
//    public String toString() {
//        return  "姓名:" + name + ",年齡:" + age;
//    }

//Code快捷鍵重寫
    @Override
    public String toString() {
        return "Student3{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class StudentTest2 {
    public static void main(String[] args) {
        Student3 s = new Student3();
        System.out.println(s.toString());//com.shujia.wyh.day18.Student3@4554617c
        System.out.println("*************************");
        System.out.println(s.getClass().getName());
        System.out.println("*****************************");
        //toString()方法等價於以下內容
        //getClass().getName() + '@' + Integer.toHexString(hashCode())
        //s.getClass().getName() + "@" + Integer.toHexString(s.hashCode())
        //this.getClass().getName() + "@" + Integer.toHexString(this.hashCode())

       // System.out.println(s.toString());
        //System.out.println(s.getClass().getName()+"@"+Integer.toHexString(s.hashCode()));

        s.setName("小花");
        s.setAge(18);
        System.out.println(s.toString());
    }
}