java - 字符串与字符串缓冲区。 IDEA提示

标签 java performance intellij-idea stringbuffer

Intellij Idea 提供替换以下内容:

StringBuffer sb = new StringBuffer();
sb.append("Name=").append(name).append(", name2=").append(name2).append(", list=").append(list);
return sb.toString();

致:

return "name=" + name + ", name2=" + name2 + ", list=" + list;

据我所知,它的效率较低(可变/不可变)。 那么,什么更好呢?

最佳答案

第二个编译为与第一个相同的字节码,只不过它使用非同步 StringBuilder 而不是同步 StringBuffer。所以它不仅可读性更强,而且速度也更快。我会选择第二个。

在循环中连接时使用 StringBuilder 非常有用,可以避免创建许多临时 String 对象:

String result = "";
for (String element : array) {
    result += element;
}

应替换为

StringBuilder builder = new StringBuilder();
for (String element : array) {
    builder.append(element);
}
String result = builder.toString();

关于java - 字符串与字符串缓冲区。 IDEA提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27104556/

相关文章:

javascript - 在 </head> 标签和 </body> 标签之前包含 Javascript 的优缺点是什么?

java - 如何在 libGDX 项目中运行 TestNG 测试?

java - 没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。 -- Netbeans、Postgresql 8.4 和 Glassfish

c - 循环和分支效率

java - Spring 框架中的切入点在内部如何工作

Javascript快速读取本地文件到UInt8Array

intellij-idea - 如何使用 Intellij SonarLint 插件抑制特定方法的警告

java - 如何从命令行访问 IntelliJ 的 java 编译器?

javascript - 使用 Java 和 Selenium 库从网站中提取 Google 广告

java - 如何创建作为一组 jackson 注释的注释?