關於StringBuffe()長度和初始化長度的問題歸納


晚上做一個習題,發現了一個關於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還要加油學習!!!自勉~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM