7

Java の int などのデータ型のサイズは誰が決めるのですか? JVM、OS、またはプロセッサ?

int サイズは 4 バイトです..OS やプロセッサに関係なく、常に 4 バイトになりますか?

4

3 に答える 3

15

Java 言語仕様がそれらを決定します。それらは、すべての VM、すべての OS、すべてのプロセッサで同じサイズです。そうでない場合、それはもう Java ではありません。

于 2012-05-26T08:26:41.440 に答える
2

データ型のサイズを決定するために JVM 実装を駆動するのは、JVM 仕様です。http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.3を参照してください。

于 2012-05-26T08:27:32.000 に答える
1

Java 仕様は各タイプが実際に使用するビット数を決定しますが、デフォルトの 32 ビット JVM は、実際には、それほど多くのスペースを必要としないものであっても、値を格納するために 32 ビットのスペースを使用していくつかのタイプをメモリに埋め込みます。それらはすべて (プログラムに関して) 実際のストレージ容量を占有しているかのように動作しますが、使用される容量は依然としてはるかに大きくなります。

他の JVM では、これを別の方法で行うことができます。たとえば、boolean値ごとに 32 ビットではなく、値ごとに 1 ビットのみで の配列を格納できます。

のサイズはint常に 32 ビットに見えますが、これは常に 32 ビットでラップアラウンドし、32 ビットの値しか保持できないためです。ハードウェアと実装に応じた数。

また、浮動小数点値は、実際にはこの点ではるかに制限されていません - と の仕様でfloatdouble、特定の形式を使用する必要がありますが、2 つの異なるライブラリjava.lang.Mathjava.lang.StrictMath( java.lang.Math と java. lang.StrictMath?を説明に使用) は明確な例です。を使用java.lang.Mathする場合、これらの関数の中間計算を特定の方法で格納する必要はなく、特定の数のビットを使用してすべてを計算する必要もありません。

于 2013-05-20T13:21:11.870 に答える