Integer.SIZE/8の値を入力 のパラメータとして渡すことを正確に割り当てているものはありますか?
4バイト(32/8)の容量を持つByteBuffer
インスタンスが作成されています。
ByteBuffer
インスタンスに複数の整数(または4バイト)を入れると、java.nio.BufferOverflowException
がスローされます。
それはByteBufferのオブジェクトを作成します(私が思うことを 単一バイトを読み書きするために使用されます。それが意味だから何?私は のバイトにこのオブジェクトを入れて、読むことができます?)。
あなたはbyte
に置くだけでなく、他のすべてのプリミティブ型boolean型を除くことができます。int
、long
、short
、float
とdouble
。
put(byte b)
メソッドはバイトを書き込みます。 putInt(int value)
はintを書き込みます。 と..だから
のためにそうByteBuffer.allocate()メソッドは、バイトを返す ファクトリメソッドのようなもののようです。
実際にはファクトリメソッドですが、Byte
ではなくByteBuffer
インスタンスが返されます。 実際には、ByteBuffer
クラスはクライアントクラスからインスタンス化できません。抽象クラスです。
のでByteBuffer.allocate()
はByteBuffer
クラスの実装をインスタンス化し、それをクライアントに返します。
ByteBuffer allocate = ByteBuffer.allocate(Integer.SIZE/8);
だから、あなたが書くことができます:いいえ、 `Integer.SIZE`が32である
allocate.putInt(1);
、つまり、これは4バイトのバッファを作成しています。そして、いいえ、それは 'Byte'を返さず、' ByteBuffer'を返しています。 –
[JavaDoc](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#allocate(int))も読んでいましたか? –