Java StringBuilder

先上類圖
這裏寫圖片描述
源碼之下,果然震驚多
java.lang.AbstractStringBuilder#hugeCapacity居然會拋OutOfMemoryError

        if (Integer.MAX_VALUE - minCapacity < 0) { // overflow
            throw new OutOfMemoryError();
        }

怎麼計算一個數的長度,絕對想不到是比較出來的

    final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
                                      99999999, 999999999, Integer.MAX_VALUE };

    // Requires positive x
    static int stringSize(int x) {
        for (int i=0; ; i++)
            if (x <= sizeTable[i])
                return i+1;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章