ByteBuffer 学习

ByteBuffer

实现类

  1. 堆外内存的方式 > DirectByteBuffer
public static ByteBuffer allocateDirect(int capacity) {
        return new DirectByteBuffer(capacity);
    }

  1. 堆内内存的方式 > HeapByteBuffer
public static ByteBuffer allocate(int capacity) {
        if (capacity < 0)
            throw new IllegalArgumentException();
        return new HeapByteBuffer(capacity, capacity);
    }

申请方法:

ByteBuffer byteBuffer = ByteBuffer.allocate(10);
ByteBuffer byteBuffer1 = ByteBuffer.allocateDirect(10); 

接下来以堆内内存的方式
主要参数:mark,position,limit,capacity
常见操作:

  1. putXXX
    在这里插入图片描述
影响position
putXXX(T t)
// position++;
// position<=limit;
// limit=capacity
// java中char占两个字节,区分大小端放入内存中, 
// 调用了Bits.putChar(this, ix(nextPutIndex(2)), x, bigEndian);
// 其他的类型也是类似的原理
putChar(char c)
不影响position
// 事先检查index是否合法

putXXX(int index,T t);
putChar(int i, char x);
  1. getXXX()方法
    在这里插入图片描述
    调用读方法之前需要调用
// limit = position
// position = 0
flip()
影响position
// position++; position<=limit
getXXX()
// getDouble()源码,和put方法过程相反
public double getDouble() {
return Bits.getDouble(this, ix(nextGetIndex(8)), bigEndian);
}
不影响position
getXXX(int index)

clean()

// 初始状态,但是没有清楚原来的数据
// position = 0;
// limit = capacity;
// mark = -1;
position =0
影响mark

mark(),reset()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值