为了账号安全,请及时绑定邮箱和手机立即绑定

StringBuilder vs Java中toString()的字符串连接

StringBuilder vs Java中toString()的字符串连接

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();


查看完整回答
反对 回复 2019-05-27
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我更喜欢:

String.format( "{a: %s, b: %s, c: %s}", a, b, c );

...因为它简短易读。

除非你在具有非常高重复次数的循环中使用它测量了性能差异,否则我不会对速度进行优化。

我同意,如果你必须输出很多参数,这个表格会让人感到困惑(就像其中一条评论所说)。在这种情况下,我将切换到一个更易读的形式(可能使用apache-commons的ToStringBuilder - 取自matt b的答案)并再次忽略性能。


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 1352 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信