Buffer 缓冲读写数据,内存中
ByteBuffer使用最多,其中有比较重要的概念和方法。
- capacity(容量):Buffer的最大数据容量,创建时设置,不可改变
- limit(限制):第一个不应该读取或写入的索引
- position(位置):下一个要读取或写入的索引
- mark(标记):一个备忘位置,通过mark()标记,reset()返回
Buffer的实现类
- ByteBuffer
- mappedByteBuffer
- DirectByteBuffer
- HeapByteBuffer
- ShortBuffer
- IntBuffer
- LongBuffer
- FloatBuffer
- DoubleBuffer
- CharBuffer
模式切换
假设buffer的capacity(容量)为10.
初始状态下
position=0 下一个写入位置
limit=10 可以写入最大位置
capacity=10 总容量
mark = -1 没有标记,标记用于拷贝之类的功能
写模式
可以通过put((byte)'A');方法写入一个字符。这时候
position=1 写入了一个指向1这个下标
limit=10 还能写9个
capacity = 10
mark = -1
读模式
执行flip()方法操作,将其他模式切换成读模式
limit = position; // 将limit设为当前position(3)
position = 0; // 将position重置为0
mark = -1; // 清除标记
结果:
position = 0 ✓ 下一个读取位置
limit = 1 ✓ 只能读到position=3的位置(之前写入的数据量)
capacity = 10 ✓ 总容量不变