java - 使用链式追加和使用多个+连接有什么区别

标签 java string stringbuilder

我正在尝试在 StringBuilder 中附加多个字符串,
使用

有什么重大区别吗
String str1 = "some";
String str2 = "string";

现在,

sb.append(str1).append(str2); // using chained appends

并使用

sb.append(str1 + str2); // using '+' operator

我的 IDE 建议我使用第一种方法,它们在线程安全或类似方面有区别吗?

最佳答案

在底层,编译器用 StringBuilder.append 替换字符串连接,但也有限制。在循环内部,它为每次迭代创建一个新的 StringBuilder,调用 toString 并将其附加到外部 StringBuilder。方法调用也是如此,因为方法调用需要一个值。编译后,您的第二个版本将显示为

sb.append(new StringBuilder().append(str1).append(str2).toString);

这显然不是最佳的,而第一个版本保持不变。

关于java - 使用链式追加和使用多个+连接有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60595405/

相关文章:

ios - UITextView 保存属性文本

java - 如何修复索引越界错误?

java - 测试两者都包含的字符串结果\n

java - 在通用类中传递 int 数组

java - 在java swingworker后台线程中使用多线程

java - 谷歌应用程序引擎网络服务的安全问题

java - 具有列表列表的 Floyd-Warshall 算法实现

ios - 如何在 swift 中每 N 个字符处为字符串添加分隔符?

python - 我有一个长字符串,其中包含多种格式的日期(dd-mm-yyyy、mm-dd-yyyy 等)。如何将它们全部转换为相同的格式?

android - StringBuilder 似乎超出了容量