晚上做一個習題,發現了一個關於StringBuffer()長度的問題
根據理解大致可以歸為以下知識。
直接上代碼分析吧
1 public class StringBuffer_length_capacity { 2 public static void main(String[] args) { 3 //注意StringBuffer默認長度為16 4 StringBuffer s1 = new StringBuffer(1); 5 //取值為1,初始化長度4 取值為2,初始化長度6, 取值為3,初始化長度為8,取值為4,初始化長度為 6 //若StringBuffer中設置的長度小於我們的字符串長度,此時容器需要擴容, 7 s1.append("12345"); 8 System.out.println("長度:"+s1.length()); 9 System.out.println("初始化長度:"+s1.capacity()); 10 } 11 }
假設我們的StringBuffer初始默認長度為x,我們所給的字符串長度為y
則可得,我們的s1.length返回的長度為x
當涉及到capacity()時候,我們需要判斷
首先1.當y<=x時:capacity取值為x
2.當y>x時:此時我們的容器需要發生擴容
a.如果y>2*x+2,此時s1.capacity() = s1.length();
b.如果y≤2*x+2,可以得到此時s1.capacity = 2*x+2
tips:StringBuffer和StringBuilder在沒有初始化長度的時候,長度為16
繼續學習,js還要加油學習!!!自勉~
