关于 ByteBuffer 读写模式切换的操作疑问
来源:7-6 NIO重写服务器-3
王二小的宠物狗
2019-06-22
初始化一个 ByteBuffer
时默认 position == 0
,limit == capacity
,
当写入部分数据再反转 flip()
到读模式时 limit = position
,position = 0
,
这个时候如果再调反转 flip()
会发生什么?
相当于 clear()
操作吗?limit = capacity
,position = 0
这样吗?
写回答
1回答
-
Qiujuer
2019-06-22
我们这样来分析:
初始化:capacity = 10
position = 0 limit = capacity = 10
写入3个数据:
position = 3 limit = capacity = 10
开始flip()
limit = position = 3 position = 0 capacity = 10
再次flip()
limit = position = 0 position = 0 capacity = 10
而clear()
position = 0 limit = capacity = 10
所以两者的性质并不相同哈。
这是两个方法的原型:
一个是把limit限制等于总容量,一个是把limit限制等于当前的坐标位置;如果当前在0位,操作后将限制在0的长度上,不可输入也不可读取。
20
相似问题