1、介绍
Java 标准库中的一个类,它提供了一种方便的方式来处理字节序列,支持将不同的 Java 基本数据类型转换为字节序列,并且支持大端字节序和小端字节序等不同的字节序。ByteBuffer 在网络编程、文件处理、加密解密、序列化反序列化等场景中都有广泛的应用。
2、如何创建
// 创建一个容量为10的ByteBuffer
ByteBuffer buffer = ByteBuffer.allocate(10);
通过静态的 allocate(int capacity) 方法,可以创建一个指定容量大小的 ByteBuffer 对象,如上所示,这里创建了一个容量为10的 ByteBuffer 对象。
3、操作
ByteBuffer 的 put() 方法可以将一个字节放入缓冲区,而 putXXX() 方法可以将不同类型(short、int、long、float、double等)的数据转换为字节序列放入缓冲区。
buffer.put((byte)1); // 放入一个byte类型数据
buffer.putShort((short)2); // 放入一个short类型数据
buffer.putInt(3); // 放入一个int类型数据
buffer.putLong(4L); // 放入一个long类型数据
buffer.putFloat(5.0f); // 放入一个float类型数据
buffer.putDouble(6.0); // 放入一个double类型数据
flip() 方法将缓冲区从写模式切换到读模式,同时重设缓冲区的指针位置,使得读写操作可以在正确的位置进行。
buffer.flip();
get() 方法返回缓冲区当前指针位置的字节,并将指针位置向后移动一个字节。
byte b = buffer.get();
short s = buffer.getShort(); // 获取一个short类型数据
int i = buffer.getInt(); // 获取一个int类型数据
long l = buffer.getLong(); // 获取一个long类型数据
float f = buffer.getFloat(); // 获取一个float类型数据
double d = buffer.getDouble(); // 获取一个double类型数据
capacity() 方法返回缓冲区的总容量,limit() 返回当前最大操作位置,remaining() 返回当前剩余操作位置。
int capacity = buffer.capacity(); // 缓冲区总容量
int limit = buffer.limit(); // 当前最大操作位置
int remaining = buffer.remaining(); // 当前剩余操作位置
position() 方法可以设置缓冲区当前指针位置,可以用于定位操作。
buffer.position(2); // 将当前指针位置设置为2
clear() 方法将缓冲区清空,同时切换到写模式,重设指针位置。
buffer.clear();
其他方法
ByteBuffer 还提供了很多其他方法,如 hasArray() 判断是否使用数组作为缓冲区、array() 获取缓冲区数据数组等。后续看到其他的再记下来。。。