admin管理员组

文章数量:1611905

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.

本文标签: 详解StringBufferCapacity