import java.nio.ByteBuffer; public class ByteBufferTest { public static void main(String[] args) { ByteBuffer buffer = ByteBuffer.allocate(6); print(buffer); buffer.put((byte) 1); buffer.put((byte) 2); buffer.put((byte) 3); print(buffer); buffer.flip(); print(buffer); buffer.get(); buffer.get(); print(buffer); } public static void print(ByteBuffer buffer) { System.out.printf("position: %d, limit: %d, capacity: %d\n", buffer.position(), buffer.limit(), buffer.capacity()); } }
时间: 2024-03-14 18:45:50 浏览: 42
nio.rar_Java识别_java nio
以上代码的输出结果是:
```
position: 0, limit: 6, capacity: 6
position: 3, limit: 6, capacity: 6
position: 0, limit: 3, capacity: 6
position: 2, limit: 3, capacity: 3
```
这段代码使用 ByteBuffer 类测试了缓冲区的写和读操作。首先,创建一个容量为 6 的 ByteBuffer 对象,打印出它的位置、限制和容量信息,输出结果为 `position: 0, limit: 6, capacity: 6`。然后,向缓冲区中写入 3 个字节的数据,打印出缓冲区的位置、限制和容量信息,输出结果为 `position: 3, limit: 6, capacity: 6`。接着,调用 `flip()` 方法,将缓冲区的位置设置为 0,限制设置为 3,打印出缓冲区的位置、限制和容量信息,输出结果为 `position: 0, limit: 3, capacity: 6`。接下来,调用 `get()` 方法读取 2 个字节的数据,打印出缓冲区的位置、限制和容量信息,输出结果为 `position: 2, limit: 3, capacity: 3`。注意,此时缓冲区的容量已经变为 3,因为调用 `flip()` 方法后,缓冲区的限制被设置为了 3,而调用 `get()` 方法会将缓冲区的位置向前移动。
阅读全文