StringBuffer的capacity()方法的主要作用是获取当前字符串的容量
length()方法的主要作有是获取当前字符串的长度
StringBuffer sb=new StringBuffer();
sb.capacity()=16;
sb.length()=0;
StringBuffer sb1=new StringBuffer(50);
sb1.capacity()=50;
sb1.length()=0;
StringBuffer sb2=new StringBuffer("abc");
sb2.capacity()=19;
sb2.length()=3;
String str="abcdefg"
StringBuffer sb3=new StringBuffer(str);
sb3.capacity()=23;
sb3.length()=7;
所以StringBuffer的默认容量大小是16,字符串每增加一个,则容量在16的基础上默认增加。
StringBuffer sb4=new StringBuffer();
sb4.append("my god");
sb4.capacity()=16;
sb4.length()=6;
sb4.append("0123456789abc");
sb4.capacity()=34;
sb4.length()=19;
StringBuffer sb5=new StringBuffer("abc");
sb5.append("123");
sb5.capacity()=19;
sb5.length()=6;
经过多次实践发现,StringBuffer的append方法的默认容量也是16,但是如果是采用的append方法进行追加字符串的话,其容量并不是在16的基础上往上加的,而是去占用16个默认的空闲容量。
如果超过了16个空闲容量,则此时StringBuffer的容量会自动增加,增加的规则则是大于等于(旧的容量x2+2),即16x2+2=34;下次增加到的容量则是34x2+2=70;
StringBuffer的另一个方法insert()也是和append方法一样的,会占用空闲的没有使用的容量,如采用构造方法new StringBuffer("str")之后,capacity()为19,insert(2,“dsff”)后容量依旧为19,但是length()为7;
StringBuffer的容量一旦增长就不可能变小了,比如现在容量增长为70,如果你使用delete()方法删除了里面所有的字符,其容量依然为70,不会因为你删除了字符其容量就减小,当然其length()肯定为0.