不得不說,有不少java初學者寫java實體類的時候,並無真正理解重寫toString()
方法,多是口頭知道也多是跟風隨帶添加toString()
方法,並無真正理解其意義,若是真要被問起來未必有十足把握回答上 ~中槍了咩~,這篇文章旨在幫助初學者正確解讀實體類重寫toString()
方法。java
在Java中每一個類都直接或者間接繼承
Object
類,toString()
方法一樣來自於Object
類。工具
其實這不難理解,在沒有重寫tostring的前提下,每次執行System.out.println()
這個方法默認就會調用一個繼承自Object
類型對象的toString
方法,這點是很是重要的基礎前提!開發工具
簡單一句話就是重寫
toString()
能夠理解爲是對對象在打印輸出時候的一種格式化。這樣作符合業務邏輯,顯示結果人性化。測試
object類裏的toString只是把字符串的直接打印,數字的要轉化成字符再打印,而對象,則直接打印該對象的hash碼(相似@15db9742
這樣的東東),它的值大概就是等於getClass().getName()+’@’+Integer.toHexString(hashCode())
,我這喬治腦殼看着都暈,hash碼
這玩意是給機器看的,平凡的人類是看不懂的鴨,什麼?你要挑戰?你相信你就是不同的煙火?那行,我就舉個例子給你看看,你能夠試着在一個實體類中...啥?你要我本身來?額...行,我來就我來....this
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Person() { } public Person(String name, Integer age) { this.name = name; this.age = age; } }
public static void main(String[] args) { Person person = new Person(); person.setAge(12); person.setName("不同的煙火"); System.out.println(person); }
如今的開發工具基本都有自動生成tostring()
方法的快捷鍵,我想你們都懂~
3d
一、沒有重寫tostring
,每執行System.out.println()
會默認調用Object
的toString
方法,狀況以下:
二、重寫tostring,每執行System.out.println()
會調用重寫的toString
方法,狀況則會根據重寫的方法打印輸出成本身想獲得的格式。code
三、爲了養成良好習慣,建議每次編寫實現類都重寫一下tostring()
方法!!對象