我注意到这两种使用StringBuilder的样式之间存在性能差异:
StringBuilder text = new StringBuilder();
// style 1
text.append("a" + "b");
// style 2
text.append("a").append("b");
似乎附加的数据文本越多,样式1的效率就越低。实际上,在压力文本中,样式1花费的时间大约是样式2的两倍。有人可以解释为什么样式1效率较低?谢谢你的帮助!
答案 0 :(得分:2)
样式1需要创建一个不可变的字符串“ab”以附加(到StringBuilder)。样式2将字符串“a”和“b”直接附加到StringBuilder中。
答案 1 :(得分:-1)
我认为原因是因为示例1使用String类连接两个字符串,然后将其附加到构建器。 但是在使用示例二时,String类不需要。要使用它来加入,而只是将字符串添加到构建器中。
部分原因是因为String无法改变你无法改变" a"到" ab"。创建一个全新的String对象,而Stringbuilder可以在不创建新对象的情况下更改其值。 See here for info on Stringbuilder vs String