为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2021-11-01 14:10:07
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条经验 获得超6个赞

根据编码器回馈结果cr如果出现结果溢出overflow时
(初次以编码字节平均占字符数(averageCharsPerByte)计算出的空间不够时),
新空间翻倍加1,为防止过程中n=0,翻倍2*n还是0,所以加1

查看完整回答
反对 回复 2021-11-06
  • 1 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信