这个ByteBuffer.allocate()方法究竟是什么创建的?

时间:2017-04-18 18:05:51

标签: java byte bytebuffer

到Java应用程序中我找到了这一行:

ByteBuffer b = ByteBuffer.allocate(Integer.SIZE / 8);

它创建了一个 ByteBuffer 对象(我认为它用于读取和写入单个字节。那么这意味着什么?我可以只读取和读取此对象中的字节?)。

所以 ByteBuffer.allocate()方法似乎就像返回Byte的工厂方法。

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

1 个答案:

答案 0 :(得分:0)

  

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

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

  

它创建了一个ByteBuffer对象(我认为它用于读写)   单字节。那意味着什么?我可以放入和读取字节   这个对象?)。

您可以输入byte以及除布尔之外的所有其他基本类型:intlongshortfloatdouble
put(byte b)方法写入一个字节。 putInt(int value)写一个int。 等等......

  

所以ByteBuffer.allocate()方法似乎就像一个   返回字节的工厂方法。

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

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

ByteBuffer allocate = ByteBuffer.allocate(Integer.SIZE / 8);

所以你可以写:

allocate.putInt(1);