【java基礎】爲何重寫toString()方法?

不得不說,有不少java初學者寫java實體類的時候,並無真正理解重寫toString() 方法,多是口頭知道也多是跟風隨帶添加toString() 方法,並無真正理解其意義,若是真要被問起來未必有十足把握回答上 ~中槍了咩~,這篇文章旨在幫助初學者正確解讀實體類重寫toString() 方法。java

解讀一:java默認的toString方法來自Object 類

在Java中每一個類都直接或者間接繼承Object 類,toString() 方法一樣來自於Object 類。工具

其實這不難理解,在沒有重寫tostring的前提下,每次執行System.out.println() 這個方法默認就會調用一個繼承自Object 類型對象的toString 方法,這點是很是重要的基礎前提!開發工具

解讀二:重寫toString()方法的意義所在

簡單一句話就是重寫toString() 能夠理解爲是對對象在打印輸出時候的一種格式化。這樣作符合業務邏輯,顯示結果人性化。測試

object類裏的toString只是把字符串的直接打印,數字的要轉化成字符再打印,而對象,則直接打印該對象的hash碼(相似@15db9742 這樣的東東),它的值大概就是等於getClass().getName()+’@’+Integer.toHexString(hashCode()) ,我這喬治腦殼看着都暈,hash碼 這玩意是給機器看的,平凡的人類是看不懂的鴨,什麼?你要挑戰?你相信你就是不同的煙火?那行,我就舉個例子給你看看,你能夠試着在一個實體類中...啥?你要我本身來?額...行,我來就我來....this

一、編寫一個叫Person的實體類

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()方法的測試效果

在這裏插入圖片描述

四、加上tostring()方法的測試效果

如今的開發工具基本都有自動生成tostring() 方法的快捷鍵,我想你們都懂~
在這裏插入圖片描述3d

總結

一、沒有重寫tostring ,每執行System.out.println() 會默認調用ObjecttoString 方法,狀況以下:
在這裏插入圖片描述
二、重寫tostring,每執行System.out.println() 會調用重寫的toString 方法,狀況則會根據重寫的方法打印輸出成本身想獲得的格式。code

三、爲了養成良好習慣,建議每次編寫實現類都重寫一下tostring() 方法!!對象

相關文章
相關標籤/搜索