格式化toString() - 新行

时间:2012-03-03 12:12:13

标签: java

我正在构建一个基于控制台的库存程序,并希望覆盖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));

6 个答案:

答案 0 :(得分: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();

对于旧版本的JDK使用StringBuilder(或StringBuffer)不仅更具可读性,而且还使字符串连接更有效。此外,使用System.getProperty( "line.separator" )确保跨平台线路结束。

答案 1 :(得分:2)

答案 2 :(得分:1)

第一个是首选。

有可能,您的程序可能会在不久的将来得到增强,以输出复杂的对象,例如Person,使用第一种方法更加清洁和可维护。

字符串连接+ .. +不是很大的性能问题。在此之前,您可以继续使用StringBuilderStringBuffer(如果您使用的是JDK< 5)

答案 3 :(得分:0)

可以使用\n创建新行。

答案 4 :(得分:0)

最好的方法是使用StringBuilder。 +每次创建一个新字符串 - 不是好的做法。只需使用StringBuilder覆盖函数toString()。

答案 5 :(得分:0)

现在可以使用以下命令获取系统相关的行分隔符:

System.lineSeparator();