ByteBuffer 中可以通过4个索引高效操作数据,它们分别是:mark(标记)、position(位置)、limit(界限)、capacity(容量)。
下表是具体操作这些索引的方法:
方法名 | 用途 |
---|---|
capacity() | 返回缓冲区容量 |
clear() | 清空缓冲区,将 position 设置为0,limit 设置为 capacity。可以通过此方法覆写缓冲区 |
flip() | 将 limit 设置为 position ,position 设置为0。此方法用于准备从缓冲区读取数据 |
limit() | 返回 limit 的值 |
limit(int newLimit) | 设置 limit 的值 |
mark() | 将 mark 设置为 position |
position() | 返回 position 的值 |
position(int newPosition) | 设置 position 的值 |
remaining() | 返回 ( limit - newPosition ) |
hasRemaining() | 若有介于 postion 和 limit 之间的元素,则返回 true |
初看这些方法可能会有点摸不着头脑,下面我们一起学习一个简单的例子:交换相邻字符,以便于加深理解。
public class UsingBuffers {
private static void symmetricScramble(CharBuffer buffer) {
while (buffer.hasRemaining()) {
//设