zoukankan      html  css  js  c++  java
  • java StringBuffer的length()和capacity()方法比较


    StringBuffer类和String类差不多,都是字符串类,只是StringBuffer在对字符串进行修改时不会生成新的对象,所以效率相对较高,占用空间也小。


    length()方法和capacity()方法都是获取StringBuffer的长度。
    length()返回字符串的实际长度;
    capacity()返回字符串所占容器的总大小。
    举例:
    这里写图片描述
    可以看到:
    1.StringBuffer的的初始大小为(16+初始字符串长度)即capacity=16+初始字符串长度;
    2.一旦length大于capacity时,capacity便在前一次的基础上加1后倍增
    例如:

    length=1;capacity=17;//初始长度
    length=5;capacity=17;//
    length=17;capacity=17;//
    length=18;capacity=(capacity+1)*2=36;//第一次倍增
    ............
    length=37;capacity=(capacity+1)*2=74;//第二次倍增
    ............
    

    但有如下特殊情况:

        StringBuffer sb3=new StringBuffer("a");
            System.out.println("length="+sb3.length());//length=1
            System.out.println("capacity="+sb3.capacity());//capacity=17;
            System.out.println("--------------------");
            sb3.append("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
            System.out.println("length="+sb3.length());//length=20;
            System.out.println("capacity="+sb3.capacity());//capacity=40;

    当length>capacity时,capacity倍增仍达不到length的长度,这种现象称为跨阶,此时,capacity将根据length的实际大小设置长度,此后将按照直接倍增的方式增长(不将length+1)

  • 相关阅读:
    右键菜单:锁到任务栏丢失 修复
    检测到鼠标时自动禁用触摸板 (注:仅适用于个别笔记本)
    清除右键菜单CMD入口
    VBS编辑字段
    VBS创建数据表
    VBS创建数据库
    QTP操作论坛回复编辑框----webelement
    数字排序
    对应键盘的ASCII码(备忘)
    将字符串打乱输出
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286843.html
Copyright © 2011-2022 走看看