关于 ByteBuffer 读写模式切换的操作疑问

来源:7-6 NIO重写服务器-3

王二小的宠物狗

2019-06-22

初始化一个 ByteBuffer 时默认 position == 0limit == capacity

当写入部分数据再反转 flip() 到读模式时 limit = positionposition = 0

这个时候如果再调反转 flip() 会发生什么?

相当于 clear() 操作吗?limit = capacityposition = 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

所以两者的性质并不相同哈。

这是两个方法的原型:

//img.mukewang.com/szimg/5d0e465f0001998f06200764.jpg

一个是把limit限制等于总容量,一个是把limit限制等于当前的坐标位置;如果当前在0位,操作后将限制在0的长度上,不可输入也不可读取。

2
0

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2316 学习 · 476 问题

查看课程