在研究ByteBuffer类时,我开始考虑一个包含ByteBuffer的数组,它可以构造如下:
byte data[] = new byte[10];
// Populate data array
ByteBuffer myBuffer = ByteBuffer.wrap(data);
int i = myBuffer.getInt();
我认为,可能会将我的字节数组的前4个字节作为int值检索。然而,当我进一步研究时,我似乎发现ByteBuffer有两个模式,它们是读写的,我们可以使用flip()
方法在它们之间翻转 。但是,由于翻转基本上是一个切换,所以它预先假定一个人知道初始值,以便在读写状态之间进行有意义的翻转。
ByteBuffer初始状态的定义是什么?
答案 0 :(得分:3)
严格地说,ByteBuffer本身不会跟踪它是“读”还是“写”;这仅仅是它如何使用的一个功能。 ByteBuffer可以随时读写。我们之所以说翻转切换“模式”是因为它是写入缓冲区,翻转它,然后从缓冲区读取的常见任务的一部分。
实际上,分配和包装都将限制和容量设置为等于数组大小,并将位置设置为零。这意味着读操作可以读取整个数组,并且写操作可以填充整个数组。因此,您可以使用新分配或包装的ByteBuffer进行读取或写入。