java - StringBuffer的capacity()方法
PHP中文网
PHP中文网 2017-04-18 09:21:15
0
3
530

StringBuffer str=new StringBuffer();
StringBuffer str1=new StringBuffer(3);
System.out.println(str.capacity()); //16
System.out.println(str1.capacity()); //8
为什么str1.capacity的结果是8?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(3)
伊谢尔伦

你可能搞錯了,輸出結果應該是:

16
3

瞧瞧源碼:

    // minimumCapacity是当前已经存储的字符长度+要追加的字符长度
    // value.length 是当前容量
    // 所以新容量=max(2*旧容量+2,追加后的字符长度)
    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);
    }

只是在追加的時候會擴充容量,初始化時除了預設是16外,設多少就是多少。

刘奇

雷雷

左手右手慢动作

這裡運行看看 Java線上編譯執行 運行環境: java v1.7.0_80

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板