StringBuffer擴容的問題

public class test {
	public static void main(String[] args) {
		StringBuffer str = new StringBuffer();
		str.append("12345");
		System.out.println(str.capacity());		//16
		System.out.println(str.length());		//5
		str.append("67890123456"); 	
		System.out.println(str.capacity());		//16
		System.out.println(str.length());		//16
		str.append("1");
		System.out.println(str.capacity());		//34
		System.out.println(str.length());		//17
		str = new StringBuffer("123");
		System.out.println(str.capacity());		//19
		System.out.println(str.length());		//3
	}
}
先看代碼第5行,StringBuffer str = new StringBuffer();//創建一個StringBuffer對象,默認大小爲16
當append()字符串小於16的時候,調用str.capacity()方法查看容量大小爲16,str.length()大小爲你添加字符串的長度
當你添加的字符串超過16的時候,StringBuffer會自動擴容到原來容量的2倍+2
str = new StringBuffer("123");
此時StringBuffer的容量不再是擴容2倍+2,而是直接由原來容量(即默認容量)+字符串長度
發佈了40 篇原創文章 · 獲贊 58 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章