重要字段
capacity:容量,最多容纳多少个字节
limit: 0=<limit<=Capacity
position: 当前指针位置,从0向上增长。如果postion大于limit,Java会报出异常。
重要方法
get()获取一个数据,并且,移动position
get(i) 获取一个指定位置数据,但是,不移动position
remaining:还剩多少字节可以读取。
flip:让limit指向正确的位置。
compact:压缩掉已经完成读取的数据。
flip和compact是我之前不太容易理解的函数。
compact:读取一段数据之后,调用campact,这时候position = limit,limit=capacity 可以继续read(向buffer写入数据)了。这可以保证写入不会溢出,也不会覆盖掉有用的数据。
flip:如果想要继续读取数据,需要调用一次flip,这样limit = position,position = 0, 这可以保证读取的正确性。
这就是flip和compact的用法。
更通俗点讲:
compact压缩空间并保证写入正确性,compact+flip 压缩空间并保证读取正确性。单为写入准备,只调用compact即可。移动并继续读取,需要先调用compact进行压缩,在通过flip方法,将position和limit设置到正确位置。
实例代码&#x