/**
* 创建HeapByteBuffer实例,大小为1024字节
*/
ByteBuffer heapByteBuffer = ByteBuffer.allocate(1024);
/**
* 创建DirectByteBuffer实例,大小为1024字节
* 这里的ByteBuffer是DirectByteBuffer,不是HeapByteBuffer.特点是用的内存是堆外内存
* 减少了复制的时间.该类的个别ByteBuffer的方法无法使用,可以查看源码,如array();
*/
ByteBuffer directByteBuffer = ByteBuffer.allocateDirect(1024);
String msg = "hello world";
/**
* 往ByteBuffer里放数据
*/
heapByteBuffer.put(msg.getBytes());
/**
* 取数据
*/
heapByteBuffer.get();
/**
* 重置了position、limit、mark的值.一般为了下次往ByteBuffer里放数据做准备
*/
heapByteBuffer.clear();
/**
* ByteBuffer是否还有数据未被读取. 源码就是 通过position < limit 返回一个布尔值
*/
heapByteBuffer.hasRemaining();
/**
* 本质就是设置position、limit、mark的值.一般为了从ByteBuffer读出数据做准备
*/
heapByteBuffer.flip();
/**
* 将读过的释放,没读过的复制到数组起始位置,position为未读过的长度,等待继续put.
* position为未读过的长度.
* limit为容器大小
* mark为-1
*/
heapByteBuffer.compact();
/**
* 就是返回position这个属性
*/
heapByteBuffer.position();
/**
* 就是返回limit这个属性
*/
heapByteBuffer.limit();
/**
* 就是返回capacity这个属
NIO-ByteBuffer方法学习
最新推荐文章于 2024-02-19 23:09:16 发布