stringbuilder 调用中的 Java 字符串连接

标签 java string stringbuilder

据我所知,StringBuilder 通过在连接期间不在字符串池中创建临时字符串实例来帮助减少内存使用。 但是,如果我这样做会发生什么:

StringBuilder sb = new StringBuilder("bu");
sb.append("b"+"u");

是否编译成

sb.append("b");
sb.append("u");

?还是取决于优化标志?或者我失去了 stringbuilders 的全部好处? 或者这个问题没有意义? :)

最佳答案

它编译为 sb.append("bu"),因为编译器将多个 String litterals 的串联转换为单个 String litteral。

如果你有

String a = "a";
sb.append(a + "b");

它会编译成

String a = "a";
String temp = a + "b"; // useless creation of a string here
sb.append(temp);

所以你应该更喜欢

sb.append(a);
sb.append("b");

在这种情况下。

关于stringbuilder 调用中的 Java 字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663252/

相关文章:

java - 在 java 中编辑像素值

java - 避免 RPC (SOAP) API 之间的中间数据转换?

java - Java 标签中的文本对齐方式

javascript - 字符串到数组或元素的数组

string - 使用perl计算字符串中的大写字母

java - 不能用Eclipse做StringBuilder

java - 如何使用 DragEvent 将图像放置在线性布局中

在 C 中将字符串转换为 unsigned long long int

java - 不可变性实际上是如何在 String 类中实现的,而可变性在 StringBuffer 和 StringBuilder 中的代码中又是如何实现的呢?

c# - 如何确保 StringBuilder 对象在多线程环境中被 GCed? (鉴于我不能使用 using 关键字)?