2012-03-03 59 views
1

我正在構建基於控制檯的庫存程序,並且想重寫toString()方法以將客戶對象打印到屏幕。格式toString() - 新行

我有以下的方法,但他們都看起來很凌亂。哪一個更好?

String toString = (name + newLine + 
         addressLine_1 + newLine + 
         addressLine_2 + newLine + 
         city + newLine + 
         country + newLine + 
         postCode + newLine); 


String toString = System.out.println(String.format("%s%n%s%n%s**%n%s%n%s%n%s%n", name, addressLine_1, addressLine_2, city, country, postCode)); 
+1

兩者同樣都是凌亂。 :D – ApprenticeHacker 2012-03-03 12:14:24

回答

3

使用字符串生成器!

StringBuilder strBuilder = new StringBuilder(); 
strBuilder.append(name); 
strBuilder.append(System.getProperty("line.separator")); 
strBuilder.append(addressLine_1); 
/* ... */ 

System.out.println(strBuilder.toString()); 
return strBuilder.toString(); 

使用StringBuilder(或爲舊版本的JDK的StringBuffer)不僅更可讀的,這也使得字符串連接更加有效。另外,請使用System.getProperty("line.separator")確保跨平臺的行結束。

+0

+1對於line.separator方法。 – 2012-03-03 12:25:12

+0

對於System.getProperty(「line.separator」)+1 – keuleJ 2012-03-03 12:31:02

0

新線可以使用\n創建。

+1

使用'System.getProperty(「line.separator」)'是更跨平臺的。 – ApprenticeHacker 2012-03-03 12:23:51

1

第一個是首選。

很有可能,您的程序可能會在不久的將來被增強以輸出複雜的對象,例如使用第一種方法時,它更清潔和可維護。

字符串連接+ .. +不是很大的性能問題。在此之前,您可以繼續使用StringBuilderStringBuffer(如果您使用的是JDK < 5)

+1

+1,用於爲較舊版本的JDK提示'StringBuffer',我忘了提及這一點。 – ApprenticeHacker 2012-03-03 12:26:46

0

最好的方法是使用StringBuilder。每次+會創建一個新的字符串 - 這不是一個好習慣。用StringBuilder重寫函數toString()。

0

你現在可以得到與系統相關的行分隔符:

System.lineSeparator();