StringBuilder和StringBuffer类似,前者是线程不安全的,后者是线程安全的。 但StringBuilder比StringBuffer速度快StringBuilder:String A = ""; long B = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { A += i+","; } System.out.PRintln(A); System.out.println("用时:"+(System.currentTimeMillis()-i)); 最后结果StringBuilder比StringBuffer块一些。StringBuffer:StringBuffer A = new StringBuffer(); long B = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { A append(i).append(","); } System.out.println(A); System.out.println("用时:"+(System.currentTimeMillis()-B)); StringBuffer在内部会维护一个比较大的char数组,数组会有一个初始容量 容量默认是16 当StringBuffer调用append方法追加内容的时候, 会在数组里检查有没有空的位置,如果有,则直接赋值 没有呢,(char数组满了)。扩容 在原来的基础上乘以2再加2.如果还不够,把容量等于需要的容量值