Java の int などのデータ型のサイズは誰が決めるのですか? JVM、OS、またはプロセッサ?
int サイズは 4 バイトです..OS やプロセッサに関係なく、常に 4 バイトになりますか?
Java の int などのデータ型のサイズは誰が決めるのですか? JVM、OS、またはプロセッサ?
int サイズは 4 バイトです..OS やプロセッサに関係なく、常に 4 バイトになりますか?
Java 言語仕様がそれらを決定します。それらは、すべての VM、すべての OS、すべてのプロセッサで同じサイズです。そうでない場合、それはもう Java ではありません。
データ型のサイズを決定するために JVM 実装を駆動するのは、JVM 仕様です。http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.3を参照してください。
Java 仕様は各タイプが実際に使用するビット数を決定しますが、デフォルトの 32 ビット JVM は、実際には、それほど多くのスペースを必要としないものであっても、値を格納するために 32 ビットのスペースを使用していくつかのタイプをメモリに埋め込みます。それらはすべて (プログラムに関して) 実際のストレージ容量を占有しているかのように動作しますが、使用される容量は依然としてはるかに大きくなります。
他の JVM では、これを別の方法で行うことができます。たとえば、boolean
値ごとに 32 ビットではなく、値ごとに 1 ビットのみで の配列を格納できます。
のサイズはint
常に 32 ビットに見えますが、これは常に 32 ビットでラップアラウンドし、32 ビットの値しか保持できないためです。ハードウェアと実装に応じた数。
また、浮動小数点値は、実際にはこの点ではるかに制限されていません - と の仕様でfloat
はdouble
、特定の形式を使用する必要がありますが、2 つの異なるライブラリjava.lang.Math
とjava.lang.StrictMath
( java.lang.Math と java. lang.StrictMath?を説明に使用) は明確な例です。を使用java.lang.Math
する場合、これらの関数の中間計算を特定の方法で格納する必要はなく、特定の数のビットを使用してすべてを計算する必要もありません。