1

私が以下を持っている場合:

byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};

各要素のサイズは1バイトになることを私は知っています。しかし、私が理解していないように見えるのは、整数87が1バイトにどのように格納されるのかということです。または、データをどのようにbyte[]保存しますか?

編集:ここjavaでは-128から127を1バイトに格納できることがわかります。つまり、これらの数値よりも大きいまたは小さいものをaに格納する方法がないということbyte[]ですか?もしそうなら、それはこれの使用を制限しませんか?または、を使用する正確な場所を理解していませんbyte[]

4

5 に答える 5

3

1バイトは8ビットです。 2^8は256です。これは、8ビットで256の異なる値を格納できることを意味します。Javaでは、これらの値は-128〜127の範囲の数値であるため、87はその範囲内にあるため、有効なバイトです。

同様に、のようなことを試してみるとbyte x = 200、200は有効なバイトではないため、エラーが発生することがわかります。

于 2012-07-31T19:11:23.820 に答える
2

Abyteは単なる8ビット整数値です。つまり、-2^7から2^7-1までの任意の値を保持できます。これには、{87、79、87、46、46、46}のすべての数値が含まれます。

integerJavaでは、は4バイト整数であり、-2^31から2^31-1を保持できます。

于 2012-07-31T19:10:57.923 に答える
0

Javaバイトは、最小値が-128、最大値が127(両端を含む)のプリミティブです。87は許容範囲内です。バイトデータ型は、メモリの節約が実際に重要である大規模な配列でメモリを節約するのに役立ちます。

byte []は、これらのプリミティブの数を格納するオブジェクトです。

于 2012-07-31T19:11:34.693 に答える
0

簡単に言えば、byte[]はバイトを格納するということだと思います。その上の配列の数値87は、intではなく1バイトです。700(または127より高い値)に変更すると、コンパイルエラーが発生します。それを試してみてください。

于 2012-07-31T19:13:31.263 に答える
0

からまでbyteの(符号付き)範囲を持つ8ビットの値を格納するために使用できます。-128127

を使用すると、特定のバイトストリームからsを構築し、それらを目的のでデコードするbyte[]などの特別な操作を実行できます。また、一部の関数は、戻り値として提供します。StringCharsetbyte[]

JVMの内部については十分にわかりませんが、メモリを節約できる可能性があります。

于 2012-07-31T19:20:20.247 に答える