据我所知,StringBuilder 在连接期间不在字符串池中创建临时字符串实例,从而有助于减少内存使用量。
但是,如果我这样做会发生什么:
StringBuilder sb = new StringBuilder("bu");
sb.append("b"+"u");
是否编译成
sb.append("b");
sb.append("u");
?或者它取决于优化标志?或者我失去了弦乐建造者的全部好处?
或者这个问题没有意义? :)
它编译为sb.append("bu")
,因为编译器将多个字符串文字的串联转换为单个字符串文字。
如果你有
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");
在这种情况下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)