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