搜尋

首頁  >  問答  >  主體

高淇Java視訊程式碼中,為啥使用Date類別新建物件列印輸出的是時間,而使用自建物件列印輸出的卻是雜湊碼位址?

最近看高老師影片時發現一個知識點不太理解,程式碼如下:

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類別物件就是輸出當前時間,而自建對象就是輸出雜湊碼呢?

小萌新求各位朋友解惑,非常感想!

巴扎黑巴扎黑2715 天前960

全部回覆(4)我來回復

  • 欧阳克

    欧阳克2017-06-23 09:16:34

    Println方法會呼叫輸出物件的toString方法,如果物件沒有定義toString方法,就依照繼承鏈往父類別找。
    Date有定義toString方法,所以輸出的是格式化的屬性資訊。
    自訂的Dog類別沒有toString方法,所以用的父類別的toString方法,也就是Object的

    回覆
    0
  • 巴扎黑

    巴扎黑2017-06-23 09:16:34

    列印一個物件的時候,會列印出它的toString方法的回傳值,Date重寫了toString方法。 Dog沒有重寫toString則會呼叫父類別Object的toString方法

    回覆
    0
  • typecho

    typecho2017-06-23 09:16:34

    Date類別重寫了Object父類別中的toString(),你自己的類別沒有啊。 。 。看下Date類別的源碼

    回覆
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-23 09:16:34

    重寫了toString方法,你可以自己到原始碼看。

    回覆
    0
  • 取消回覆