以下是关于Java Charset.decode()方法 自动扩容问题!求教!

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,想请教一下高手,什么情况下会有这样自动扩容?

斯蒂芬大帝
浏览 238回答 1
1回答

神不在的星期二

根据编码器回馈结果cr如果出现结果溢出overflow时(初次以编码字节平均占字符数(averageCharsPerByte)计算出的空间不够时),新空间翻倍加1,为防止过程中n=0,翻倍2*n还是0,所以加1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
JQuery