加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

StringBuffer和StringBuilder的扩容

发布时间:2020-12-15 07:26:22 所属栏目:Java 来源:网络整理
导读:在没有传参的情况下默认初始容量是16。 public StringBuffer() { super (16 ); } 有参数的情况下,初始容量是16+字符串的长度,并且是用append()方法追加的字符 public StringBuffer(String str) { super (str.length() + 16 ); append(str); } ? 它是这么

在没有传参的情况下默认初始容量是16。

public StringBuffer() {
        super(16);
    }

有参数的情况下,初始容量是16+字符串的长度,并且是用append()方法追加的字符

 public StringBuffer(String str) {
        super(str.length() + 16);
        append(str);
    }

?

它是这么扩容的 int newCapacity = (value.length << 1) + 2;增加为自身长度的一倍然后再加2;这个时候如果还是放不下,那就直接扩容到它需要的长度 ?newCapacity = minCapacity;

 void expandCapacity(int minimumCapacity) {
        int newCapacity = value.length * 2 + 2;
        if (newCapacity - minimumCapacity < 0)
            newCapacity = minimumCapacity;
        if (newCapacity < 0) {
            if (minimumCapacity < 0) // overflow
                throw new OutOfMemoryError();
            newCapacity = Integer.MAX_VALUE;
        }
        value = Arrays.copyOf(value,newCapacity);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读