我正在构建一个基于控制台的库存程序,并希望覆盖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));
答案 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)
您可以使用一些ToString实用程序来简化工作。我知道两种变体:
答案 2 :(得分:1)
第一个是首选。
有可能,您的程序可能会在不久的将来得到增强,以输出复杂的对象,例如Person
,使用第一种方法更加清洁和可维护。
字符串连接+ .. +不是很大的性能问题。在此之前,您可以继续使用StringBuilder
或StringBuffer
(如果您使用的是JDK< 5)
答案 3 :(得分:0)
可以使用\n
创建新行。
答案 4 :(得分:0)
最好的方法是使用StringBuilder。 +每次创建一个新字符串 - 不是好的做法。只需使用StringBuilder覆盖函数toString()。
答案 5 :(得分:0)
现在可以使用以下命令获取系统相关的行分隔符:
System.lineSeparator();