【java基礎】為什么重寫toString()方法?


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

解讀一: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碼 這玩意是給機器看的,平凡的人類是看不懂的鴨,什么?你要挑戰?你相信你就是不一樣的煙火?那行,我就舉個例子給你看看,你可以試着在一個實體類中...啥?你要我自己來?額...行,我來就我來....

1、編寫一個叫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;
    }
}

2、編寫測試類

 public static void main(String[] args) {
       
        Person person = new Person();
        person.setAge(12);
        person.setName("不一樣的煙火");
        System.out.println(person);

    }

3、沒重寫tostring()方法的測試效果

在這里插入圖片描述

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

現在的開發工具基本都有自動生成 tostring() 方法的快捷鍵,我想大家都懂~ 在這里插入圖片描述

總結

1、沒有重寫 tostring ,每執行 System.out.println() 會默認調用 Object toString 方法,情況如下: 在這里插入圖片描述 2、重寫tostring,每執行 System.out.println() 會調用重寫的 toString 方法,情況則會根據重寫的方法打印輸出成自己想得到的格式。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM