在Java中使用StringBuilder进行字符串连接通常更可取。情况总是这样吗?
我的意思是:创建一个StringBuilder对象,调用append()方法和最后toString()的开销已经比连接现有的字符串与+操作符两个字符串更小,还是它只适用于更多(两个以上)字符串?
如果有这样一个阈值,它取决于什么(也许是字符串长度,但以哪种方式)?
最后,你是否愿意牺牲+连接的可读性和简便性来换取StringBuilder在较小情况下的性能,比如两个,三个或四个字符串?
在过时的Java优化技巧和Java都市神话中,显式地使用StringBuilder进行常规连接被认为是过时的。
如果你在循环中使用字符串连接,就像这样,
String s = "";
for (int i = 0; i < 100; i++) {
s += ", " + i;
}
那么你应该使用StringBuilder(不是StringBuffer)而不是String,因为它更快,占用的内存更少。
如果你有一个陈述,
String s = "1, " + "2, " + "3, " + "4, " ...;
那么你可以使用string,因为编译器会自动使用StringBuilder。
如果你在循环中使用字符串连接,就像这样,
String s = "";
for (int i = 0; i < 100; i++) {
s += ", " + i;
}
那么你应该使用StringBuilder(不是StringBuffer)而不是String,因为它更快,占用的内存更少。
如果你有一个陈述,
String s = "1, " + "2, " + "3, " + "4, " ...;
那么你可以使用string,因为编译器会自动使用StringBuilder。