2017-04-18 3 views
0

私は、この行を見つけた:このByteBuffer.allocate()メソッドによって正確に作成されるものは何ですか? Javaアプリケーションへ

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

それは私が考えることのByteBufferオブジェクトは(1バイトを読み書きするために使用され、それが意味それでは、私は入れて読むことができるcreats。?このオブジェクトのバイト?

したがって、ByteBuffer.allocate()メソッドは、バイトを返すファクトリメソッドのようです。

しかし、Integer.SIZE/8の値を入力パラメータとして渡すことは正確に割り当てられていますか?

+2

、つまり、これは4バイトのバッファを作成しています。そして、いいえ、それは 'Byte'を返さず、' ByteBuffer'を返しています。 –

+0

[JavaDoc](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#allocate(int))も読んでいましたか? –

答えて

0

Integer.SIZE/8の値を入力 のパラメータとして渡すことを正確に割り当てているものはありますか?

4バイト(32/8)の容量を持つByteBufferインスタンスが作成されています。
ByteBufferインスタンスに複数の整数(または4バイト)を入れると、java.nio.BufferOverflowExceptionがスローされます。

それはByteBufferのオブジェクトを作成します(私が思うことを 単一バイトを読み書きするために使用されます。それが意味だから何?私は のバイトにこのオブジェクトを入れて、読むことができます?)。

あなたはbyteに置くだけでなく、他のすべてのプリミティブ型boolean型を除くことができます。intlongshortfloatdouble
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); 
関連する問題