深入瞭解toString方法

 原來在剛開始學習Java的時候非常好奇爲什麼直接打印對象的話,會出現對象名和一串不知所云的哈希碼,後來在學習中不斷深入學習,終於醍醐灌頂到了toSting方法的原理。

       學習繼承之後,***一些高級的部分發現,所有創造出來的類都是繼承自Object類,而toString方法是在Object類裏定義的,實際上打印對象的時候就默認調用了這個方法。Java只能用引用變量引用,hashcode存儲的是當前變量引用的對象的地址,只是一個相關的數值代表內存地址,但這不是真正的內存地址,這是虛擬機爲了安全實施的。

       當時學習的時候只是知道那是一串數字,現在融會貫通的學習終於知道來歷了。在JDK的安裝路徑下,src.zip是全部的Java源程序,找到Object類的toString方法,它是這樣定義的,得到類對象和這個類的類名,字符串“@”和一串十六進制的整數。

 public String toString() {   
    return getClass().getName() +"@" + Integer.toHexString(hashCode());   
    }


       因爲即使你沒有表達出來 類名 extends Object,但是所用的類繼承自Object,在你沒有覆寫toString方法打印對象的時候就自動調用了默認的tostring方法,自然答案就出來了。要想打印對象,最好的方式就是按照你的想法去覆寫toString方法。


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