继承自Buffer,用于存储基本类型数据的容器
capacity(容量),缓冲区容量,不能更改
postion(位置),下一个要读取或写入的元素索引
limit(限制),第一个不能被读取或写入的元素索引
mark(标记),标记索引,调用reset方法重置缓冲区位置到mark索引
标记、位置、限制和容量值遵守以下不变式:
0 <= 标记 <= 位置 <= 限制 <= 容量
常用操作方法
- capacity()
返回缓冲区的容量 - clear()
清空缓冲区,将position设为0,limit设为capacity,丢弃mark的值,一般调用此方法后用来覆盖写入缓冲区 - flip()
将limit设为position,position设为0,丢弃mark的值。一般用在read()方法之后用来从缓冲区读取(get)已经写入的数据 - rewind()
position置0,标记被丢弃,在一系列通道write()和get()操作之前进行 - limit()
返回limit的值 - limit(int newLimit)
设置限制,如果位置大于限制,position=limit,如果已有标记大于新限制,那么标记被丢弃 - mark()
将当前position设置为标记 - position
返回当前position - position(int newPosition)
设置position,如果已有mark大于position,则丢弃mark - remaining()
返回limit-positi - hasRemaining()
若有介于limit和position之间的元素,则返回true
总结
设置属性时,要遵循不变式,不符合不变式的设置会被丢弃或重置为合理值,学习时对照源码理解会更加深刻