StringBuffer的Capacity详解

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.
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值