据我所知,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/