我想知道StringBuffer的使用是否与我之前的代码完全相同,因为SonarQube要求我不要使用+=
来附加字符串。
我之前的代码:
String sign = "";
if (value < 0) {
sign.append("-");
}
我使用StringBuffer的新代码:
StringBuffer sign = new StringBuffer();
sign.append("");
if (value < 0) {
sign.append("-");
}
这样更好吗?
感谢您的建议。
答案 0 :(得分:2)
除非你在循环中使用该代码,否则你的第一种方式( String concatination )没有坏处。对于单次尝试,您可以使用它。
正如有人评论我假设写sign.append("-");
,你的意思是sign +="-"
如果您在循环中使用我建议使用StringBuilder
而不是StringBuffer
,因为StringBuffer
还有另一个开销,它是同步的。除非您需要线程安全,否则最好将其更改为StringBuilder
。
我不确定为什么SonarQube会建议您使用StringBuffer
。
答案 1 :(得分:1)
StringBuffer
是String
连接的更好方法。
因为它会提供更好的内存利用率。
答案 2 :(得分:0)
是的,这是更好的方式,但StringBuffer
比StringBuilder
慢,但已同步。
如果您使用此代码不在多线程应用程序中,我建议您使用StringBuilder
。