先上類圖
源碼之下,果然震驚多
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;
}