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());
}
}