StringBuffer一般用在高效率的字符串追加(即构造新字符串),它和String用+=进行追加在功能上是等价的,不过效率却远远大于后者。
StringBuffer是一个线程安全的、可变的字符序列。
可变:
其实它很像String,只不过在追加或修改时,String要重新创建对象来保存新值,而StringBuffer对象则允许对其自身进行修改,不用重新创建对象。在web服务器上,如果用String进行频繁的+=,大量的String对象将会严重影响服务器的性能和资源。
线程安全:
在多线程同时操作StringBuffer对象时,不会出现StringBuilder的囧境:即线程A和线程B同时执行stringBuilder.append(‘a‘),本来stringBuilder的长度应该增加2,由于StringBuilder不是线程安全,可能会导致长度只增加1。
StringBuffer用在对字符串进行频繁修改和连接的情景。下面是一个使用StringBuffer的小例子:
//change the words array into a string
StringBuffer wordsbuffer = new StringBuffer();
for(int i = 0; i < words.length; i++){
wordsbuffer.append(words[i]);
if(i != words.length-1)
// wordsbuffer.append("\r\n");
//else
wordsbuffer.append(‘ ‘);
}
String wordlist = wordsbuffer.toString();