和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。 但是,这个字符数组,留有冗余长度
比如说new StringBuffer(“the”),其内部的字符数组的长度,是19,而不是3,这样调用插入和追加,在现成的数组的基础上就可以完成了。
如果追加的长度超过了19,就会分配一个新的数组,长度比原来多一些,把原来的数据复制到新的数组中,看上去 数组长度就变长了。
可以用.length()和.capacity分别查看StringBuffer的内容长度和总的预留长度。
//String与StringBuffer的性能区别?
//
//生成10位长度的随机字符串
//然后,先使用String的+,连接10000个随机字符串,计算消耗的时间
//然后,再使用StringBuffer连接10000个随机字符串,计算消耗的时间
//
//提示: 使用System.currentTimeMillis() 获取当前时间(毫秒)
package charactor;
import java.util.Arrays;
public class TestString{
public static void main(String[] args) {
long firstStageTime=System.currentTimeMillis();//用StringBuffer拼接10000个字符串
int len=10;
StringBuffer buffer= new StringBuffer("");
for (int i = 0; i < 10000; i++) {
buffer=buffer.append(randomString(len));
}
System.err.println(System.currentTimeMillis()-firstStageTime);
l