11

私が理解しているように、32 ビットと 64 ビットの 2 つの整数の違いは次のとおりです。 32 ビットの範囲 -2,147,483,648 ~ 2,147,483,647

System.out.println("JVM Bit size: " + System.getProperty("sun.arch.data.model")); を出力して検証します。

JVM ビットサイズ: 64

10 文字より大きい数値で新しい整数変数を初期化しようとすると、コンパイル エラーが発生します。何故ですか?64ビットの方が大きいようです

例 (netbeans で実行): int x = 12345678910; => エラー: 整数が大きすぎます

4

3 に答える 3

33

Javaの のサイズはint、JDK の 32 ビットまたは 64 ビットとは完全に無関係です。常に 4 バイト = 32 ビット = −2,147,483,648 ~ 2,147,483,647 です。

64 ビット整数が必要な場合はlong、常に 64 ビット = 8 バイトである を使用します。

于 2013-07-09T16:16:39.410 に答える
5

他の言語とは異なり、Java の数値プリミティブ型は、プラットフォーム (32 ビットまたは 64 ビット、LE または BE) に関係なく、常に同じサイズです。これらはすべてビッグ エンディアンで、 は 1 バイト、 とbyteは 2 バイトshortcharは 4 バイトint、 は 8 バイトですlong

そうでない場合、jar はプラットフォーム間で移植できません...

于 2013-07-09T16:17:05.863 に答える
3

あなたの最高のリソースはJLSです:

整数型は、値がそれぞれ 8 ビット、16 ビット、32 ビット、および 64 ビットの符号付き 2 の補数整数である byte、short、int、および long と、値が 16 ビットの符号なし整数である char です。 UTF-16 コード単位を表す

4.2.1. 整数型と値

整数型の値は、次の範囲の整数です。

  1. バイトの場合、-128 から 127 まで (両端を含む)

  2. 略して、-32768 から 32767 まで (両端を含む)

  3. int の場合、-2147483648 から 2147483647 まで (両端を含む)

  4. -9223372036854775808 から 9223372036854775807 まで

  5. char の場合、'\u0000' から '\uffff' まで、つまり 0 から 65535 まで

于 2013-07-09T16:30:06.287 に答える