字符串的串联,就是用 + 把多个字符串拼接成一个字符串的便利途径。链接 n 个字符串为一个,这种用法很方便,但不一定都可取。例如,大量的串联字符串,很可能会造成性能的下降
public String statement(){
String result = "";
for(int i = 0, count = numItem(); i < count;i++){
result += lineForItem(i);//String concatenation
}
return result;
}
如果 numItem() 的值很大,则这个方法的效率很低。为了可以接受的性能,用StringBuilder代替,StringBuilder就是为了拼接而产生的
public String statement(){
int count = numItem();
StringBuilder b = new StringBuilder(count * LINE_WIDTH);
for(int i = 0; i < count; i++){
b.append(lineForItem(i));
}
return b.toString();
}
上述两个方法的性能差别很大。尤其是numItem() 的值越大,差别月明显。我们只需记住一条,单线程中用 StringBuilder 代替 String 的串联即可,如果是多线程,线程不安全的情况下,用 StringBuffer 来代替。