【java】在java中為啥要重寫toString 方法?


在java中為啥要重寫toString 方法?下面我就以一個簡單的例子來說明這個把。

先定義一個test5類。並寫它的get,set方法。

 

 

package test5;

public class Test5 {
    private String name;
    private String sex;
    private int No;
    
    
    public void Show(){
        System.out.println("這是我的展示方法!!!!");
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getNo() {
        return No;
    }
    public void setNo(int no) {
        this.No = no;
    }
}

然后定義一個帶有主函數的test6的類,如下:

package test5;

public class Test6 {
public static void main(String[] args) {
    Class<?> demo= null;
    try {
        demo=Class.forName("test5.Test5");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Test5 test5= new Test5();
    test5.setName("xiaoming");
    test5.setNo(001);
    test5.setSex("man");
    System.out.println(test5);
}
}

運行上面的程序發現,結果如下:

 

test5.Test5@e2cb55

顯然這個並不是我們所想要得到的這個test5的屬性值,原因很簡單,就是object類里的toString只是把字符串的直接打印,

數字的要轉化成字符再打印,而對象,則直接打印該對象的hash碼。而上面的結果就是test5所對應的哈希值。

 

如果想要得到test5的各個屬性值應該重寫toString方法。如下:

 

    public String toString(){
        return "["+this.name+"  "+this.sex+"  "+this.No+"]";
    }

 

則Test5應該寫成如下:

package test5;

public class Test5 {
    private String name;
    private String sex;
    private int No;
    
    public String toString(){
        return "["+this.name+"  "+this.sex+"  "+this.No+"]";
    }
    public void Show(){
        System.out.println("這是我的展示方法!!!!");
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getNo() {
        return No;
    }
    public void setNo(int no) {
        this.No = no;
    }
}

這次再運行test6時發現結果是:

[xiaoming  man  1]

 

好的,這就是要重寫toString的一個地方!!!

 


免責聲明!

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



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