public class TestCapacity { public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("Hello");
System.out.println("StringBuffer: "+sb1);
System.out.println("length: "+sb1.length());
System.out.println("capacity: "+sb1.capacity());
System.out.println("--------------------");
sb1.append("aaaaabbbbbcccccddddd");
System.out.println("StringBuffer: "+sb1);
System.out.println("length: "+sb1.length());
System.out.println("capacity: "+sb1.capacity());
System.out.println("--------------------");
StringBuilder sb2 = new StringBuilder("aaaaabbbbbcccccddddd");
sb2.append("aaaaabbbbbcccccddddd");
System.out.println("StringBuffer: "+sb2);
System.out.println("length: "+sb2.length());
System.out.println("capacity: "+sb2.capacity()); }
}结果:
StringBuffer: Hello
length: 5
capacity: 21
--------------------
StringBuffer: Helloaaaaabbbbbcccccddddd
length: 25
capacity: 44
--------------------
StringBuffer: aaaaabbbbbcccccdddddaaaaabbbbbcccccddddd
length: 40
capacity: 74
高手们说说结果为什么会这样。
StringBuilder sb1 = new StringBuilder("Hello");
System.out.println("StringBuffer: "+sb1);
System.out.println("length: "+sb1.length());
System.out.println("capacity: "+sb1.capacity());
System.out.println("--------------------");
sb1.append("aaaaabbbbbcccccddddd");
System.out.println("StringBuffer: "+sb1);
System.out.println("length: "+sb1.length());
System.out.println("capacity: "+sb1.capacity());
System.out.println("--------------------");
StringBuilder sb2 = new StringBuilder("aaaaabbbbbcccccddddd");
sb2.append("aaaaabbbbbcccccddddd");
System.out.println("StringBuffer: "+sb2);
System.out.println("length: "+sb2.length());
System.out.println("capacity: "+sb2.capacity()); }
}结果:
StringBuffer: Hello
length: 5
capacity: 21
--------------------
StringBuffer: Helloaaaaabbbbbcccccddddd
length: 25
capacity: 44
--------------------
StringBuffer: aaaaabbbbbcccccdddddaaaaabbbbbcccccddddd
length: 40
capacity: 74
高手们说说结果为什么会这样。
length表示实际长度
capacity表示容量这个原理跟ArrayList的实现如出一辙,LZ可以去看看源码