Java 这个ByteBuffer.allocate()方法到底创建了什么?

Java 这个ByteBuffer.allocate()方法到底创建了什么?,java,byte,bytebuffer,Java,Byte,Bytebuffer,在一个Java应用程序中,我发现这行代码: ByteBuffer b = ByteBuffer.allocate(Integer.SIZE / 8); 它创建了一个ByteBuffer对象(我认为它用于读取和写入单个字节。那么这意味着什么?我可以在这个对象中放置和读取字节?) 因此,ByteBuffer.allocate()方法似乎类似于返回字节的工厂方法 但传递Integer.SIZE/8值作为输入参数究竟是什么 将Integer.SIZE/8值作为输入传递到底是什么 参数 它正在创建一个容

在一个Java应用程序中,我发现这行代码:

ByteBuffer b = ByteBuffer.allocate(Integer.SIZE / 8);
它创建了一个ByteBuffer对象(我认为它用于读取和写入单个字节。那么这意味着什么?我可以在这个对象中放置和读取字节?)

因此,ByteBuffer.allocate()方法似乎类似于返回字节的工厂方法

但传递Integer.SIZE/8值作为输入参数究竟是什么

将Integer.SIZE/8值作为输入传递到底是什么 参数

它正在创建一个容量为4字节(32/8)的
ByteBuffer
实例。
如果在
ByteBuffer
实例中放入多个整数(或4个字节),将抛出
java.nio.BufferOverflowException

它创建了一个ByteBuffer对象(我认为是用来读写的) 单字节。那它意味着什么?我可以把和只读字节放进去 这个物体?)

您可以输入
byte
,也可以输入除boolean之外的所有其他基本类型:
int
long
short
float
double

put(字节b)
方法写入一个字节。
putInt(int值)
写入一个int。 对……也是如此。。

因此,ByteBuffer.allocate()方法似乎类似于 返回字节的工厂方法

它确实是一个工厂方法,但不是返回一个
Byte
,而是返回一个
ByteBuffer
实例。 实际上,
ByteBuffer
类不能从客户机类实例化:它是一个抽象类。

因此
ByteBuffer.allocate()
实例化
ByteBuffer
类的实现并将其返回给客户端:

ByteBuffer allocate = ByteBuffer.allocate(Integer.SIZE / 8);
所以你可以写下:

allocate.putInt(1);

不,
Integer.SIZE
是32,因此创建了一个4字节的缓冲区。不,它不是返回一个
字节
,而是返回一个
字节