ByteBuffer byteBuffer = ByteBuffer.allocate(20);FileChannel channel = new FileInputStream(PATH).getChannel();channel.read(byteBuffer);byteBuffer.clear();CharBuffer buffer = Charset.defaultCharset().decode(byteBuffer);通過上述代碼得到的CharBuffer的容量是21,比byteBuffer要大,查看decode方法的源碼:看不懂,其中有一句代碼是2n * 1,想請教一下高手,什么情況下會有這樣自動擴容?
1 回答

神不在的星期二
TA貢獻1963條經(jīng)驗 獲得超6個贊
根據(jù)編碼器回饋結(jié)果cr如果出現(xiàn)結(jié)果溢出overflow時
(初次以編碼字節(jié)平均占字符數(shù)(averageCharsPerByte)計算出的空間不夠時),
新空間翻倍加1,為防止過程中n=0,翻倍2*n還是0,所以加1
添加回答
舉報
0/150
提交
取消