2016-12-04 111 views
2

我試圖打印出在我的主要方法中包含一個int和兩個字符串的Person的詳細信息。我知道我會使用toString()方法,但我不記得我會如何使用此方法正確打印每個人的詳細信息。我假設我必須在我的Person課程中創建一個toString()方法,但我不確定我必須對此進行什麼。在我的主要方法中,我把這個:轉換Person類型的對象toString()?

System.out.println("Person: " + Person.Ben.toString()); 
System.out.println("Person: " + Person.Georgia.toString()); 
System.out.println("Person: " + Person.Tom.toString()); 
System.out.println("Person: " + Person.Beth.toString()); 

什麼會在這裏完成這裏?

public Person toString() 
{ 
    //what goes here? 
} 

目前我得到這樣的輸出:

Person: [email protected] 
Person: [email protected] 
Person: [email protected] 
Person: [email protected] 

任何幫助表示讚賞,感謝。

+0

看這個問題,我同意後,我想它,我重複,對不起,發佈前沒有找到它。如果可以,我會刪除它,但我不能,因爲它已經有答案。 – Ben

回答

3

您應該覆蓋Object#toString。它的簽名:

public String toString() 

注意,它返回一個String,所以你應該做的是這樣的:如你所願

@Override 
public String toString() 
{ 
    return this.name + " " + this.age; 
} 

當然你也可以改善這一點,我只是寫了演示。


值得一提的是你現在得到的輸出的含義。

Object類的toString方法返回由 其中物體是一個實例,所述-SIGN 字符「@」的類的名稱的字符串,並且無符號:如在該文檔中規定哈希的十六進制表示 對象的代碼。換句話說,該方法返回一個字符串等於 ,它的值:

getClass().getName() + '@' + Integer.toHexString(hashCode())

1

toString方法來源於稱爲java.lang.Object父類和它的簽名是public String toString(),所以你toString應該是:

@Override 
public String toString() { 
    StringBuilder sb = ... 
    sb.append("Name: "); 
    sb.append(name); 
    sb.append("Age: "); 
    sb.append(age); 
    return sb.toString(); 
} 

@Override註解用於覆蓋父類的方法。