ByteBuffer是nio包中的类
实际上就是对字节数组的一个封装,提供了操作字节的api,方便的进行字节的读取,所以说是字节缓冲区。
- 分配一块空间用于存放字节
- 支持除了boolean之外的所有基本类型的存储,因为这些基本类型最终也是通过字节数组存储的,之所以不包含boolean,因为boolean不需要一个字节进行存储,只需要一个bit就可以了。
- 通过四个指针对缓冲区中的字节进行操作
- position:当前操作位置的指针
- mark:保存某个时刻的操作位置的指针
- capacity:缓冲区的总大小
- limit:操作数据的界限,虽然说容量是10,但是只是写入了6个字节,所以读取的界限就是6
- 字节缓冲区跟流不一样,流中的数据一旦读取过之后,无法回头再操作,但是字节缓冲区可以;字节缓冲区的情况操作也不是真正清除了缓冲区中的字节,而是将上面提到的指针位置复位,新写入的数据会覆盖之前位置的字节
以前我们想要操作字节数组,也就是一个byte[],需要我们自己管理当前操作的位置,数组的容量等,现在有了字节缓冲区,帮我们解决这个问题