StringBuilder vs Java中toString()的字符串连接鉴于toString()下面的两个实现,首选哪一个:public String toString(){
return "{a:"+ a + ", b:" + b + ", c: " + c +"}";}要么public String toString(){
StringBuilder sb = new StringBuilder(100);
return sb.append("{a:").append(a)
.append(", b:").append(b)
.append(", c:").append(c)
.append("}")
.toString();}?更重要的是,鉴于我们只有3个属性,它可能没有什么区别,但你会在什么时候从+concat 切换到StringBuilder?
4 回答
互换的青春
TA贡献1797条经验 获得超6个赞
关键是你是在一个地方写一个连接还是随着时间累积它。
对于您给出的示例,明确使用StringBuilder没有意义。(查看第一个案例的编译代码。)
但是如果你在循环中构建一个字符串,请使用StringBuilder。
为了澄清,假设hugeArray包含数千个字符串,代码如下:
...String result = "";for (String s : hugeArray) { result = result + s;}
与以下相比,这是非常浪费时间和内存的:
...StringBuilder sb = new StringBuilder();for (String s : hugeArray) { sb.append(s);}String result = sb.toString();
慕田峪4524236
TA贡献1875条经验 获得超5个赞
我更喜欢:
String.format( "{a: %s, b: %s, c: %s}", a, b, c );
...因为它简短易读。
除非你在具有非常高重复次数的循环中使用它并测量了性能差异,否则我不会对速度进行优化。
我同意,如果你必须输出很多参数,这个表格会让人感到困惑(就像其中一条评论所说)。在这种情况下,我将切换到一个更易读的形式(可能使用apache-commons的ToStringBuilder - 取自matt b的答案)并再次忽略性能。
添加回答
举报
0/150
提交
取消