使用字符串缓冲区为字符串附加在Java中

时间:2015-10-01 09:01:10

标签: java string append sonarqube stringbuffer

我想知道StringBuffer的使用是否与我之前的代码完全相同,因为SonarQube要求我不要使用+=来附加字符串。

我之前的代码:

String sign = "";
if (value < 0) {
    sign.append("-");
}

我使用StringBuffer的新代码:

StringBuffer sign = new StringBuffer();
sign.append("");
if (value < 0) {
    sign.append("-");
}

这样更好吗?

感谢您的建议。

3 个答案:

答案 0 :(得分:2)

除非你在循环中使用该代码,否则你的第一种方式( String concatination )没有坏处。对于单次尝试,您可以使用它。

正如有人评论我假设写sign.append("-");,你的意思是sign +="-"

如果您在循环中使用我建议使用StringBuilder而不是StringBuffer,因为StringBuffer还有另一个开销,它是同步的。除非您需要线程安全,否则最好将其更改为StringBuilder

我不确定为什么SonarQube会建议您使用StringBuffer

答案 1 :(得分:1)

StringBufferString连接的更好方法。

因为它会提供更好的内存利用率。

答案 2 :(得分:0)

是的,这是更好的方式,但StringBufferStringBuilder慢,但已同步。
如果您使用此代码不在多线程应用程序中,我建议您使用StringBuilder