StringBuilder与String中的toString()中的字符串连接

问题:

考虑到下面的2 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个属性,它可能没有什么不同,但在什么时候你会从+连接到StringBuilder

回答:

版本1是优选的,因为它更短,the compiler will in fact turn it into version 2 – 没有任何性能差异。

更重要的是,鉴于我们只有3个属性,它可能没有什么不同,但在什么时候从连接切换到构建器?

在一个循环中连接的时候,通常当编译器不能自己替换StringBuilder时。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: StringBuilder vs String concatenation in toString() in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 1 =