最近看高老師影片時發現一個知識點不太理解,程式碼如下:
public class Test065 {
public static void main(String[] args){
Date d = new Date();//得到当前时间的毫秒数
System.out.println(d);
Dog a = new Dog();
System.out.println(a);
}
}
class Dog{
int age;
}
輸出結果如下:
Thu Jun 15 19:43:29 CST 2017
com.test065.Dog@33909752
同樣是列印一個對象,為什麼Date類別物件就是輸出當前時間,而自建對象就是輸出雜湊碼呢?
小萌新求各位朋友解惑,非常感想!
Println方法會呼叫輸出物件的toString方法,如果物件沒有定義toString方法,就依照繼承鏈往父類別找。
Date有定義toString方法,所以輸出的是格式化的屬性資訊。
自訂的Dog類別沒有toString方法,所以用的父類別的toString方法,也就是Object的
列印一個物件的時候,會列印出它的toString方法的回傳值,Date重寫了toString方法。 Dog沒有重寫toString則會呼叫父類別Object的toString方法
Date類別重寫了Object父類別中的toString(),你自己的類別沒有啊。 。 。看下Date類別的源碼
重寫了toString方法,你可以自己到原始碼看。