1.2.1 Buffer机制
- 缓冲区是一个可读写的内存块(一个含数组的容器对象)
- Channel提供从文件、网络读取数据的渠道,但是读取或者写入数据都必须经由Buffer
1.2.1.1 示例
//可存放5个int的Buffer
IntBuffer intBuffer = IntBuffer.allocate(5);
//写操作
for(int i = 0 ; i < intBuffer.capacity(); i++){
intBuffer.put(i * 2);
}
//读写切换
intBuffer.flip();
while(intBuffer.hasRemaining()){
System.out.println(intBuffer.get());
}
当我们点进去IntBuffer
类中,可以看到三个属性
final int[] hb; // 真正存放数据的地方
final int offset;
boolean isReadOnly; // Valid only for heap buffers
它的父类Buffer
,有四个很重要的属性
private int mark = -1; //标记,很少主动修改
private int position = 0; //当前位置,会自动变化
private int limit; //缓冲区的当前终点,可以变化
private int capacity; //初始化时allocate的数量,不可改变
示例调试
//可存放5个int的Buffer
IntBuffer intBuffer = IntBuffer.allocate(5);
- 初始化的时候limit时等于capacity的
//写操作