11

据我了解,32 位和 64 位的两个整数之间的区别如下: 32 位范围 -2,147,483,648 到 2,147,483,647 64 位范围:-9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807

我使用的是 64 位 jdk,我通过打印以下内容来验证它: System.out.println("JVM Bit size: " + System.getProperty("sun.arch.data.model"));

JVM 位大小:64

当我尝试初始化一个数字大于 10 个字母的新整数变量时,我得到一个编译错误。这是为什么?看起来64位更大

示例(在 netbeans 上运行):int x = 12345678910;=> 错误:整数太大

4

3 回答 3

33

The size of an int in Java is completely independent of the 32-bitness or 64-bitness of a JDK. It is always 4 bytes = 32 bits = −2,147,483,648 to 2,147,483,647.

If you want a 64-bit integer, use a long, which is always 64 bits = 8 bytes.

于 2013-07-09T16:16:39.410 回答
5

Unlike other languages, Java's numeric primitive types are always the same size, whatever the platform (32bit or 64bit, LE or BE); they are all big endian and are 1 byte long for byte, 2 bytes long for short and char, 4 bytes long for int and 8 bytes long for long.

If it were not the case, jars would not be portable across platforms...

于 2013-07-09T16:17:05.863 回答
3

您最好的资源是JLS

整数类型为 byte、short、int 和 long,其值分别为 8 位、16 位、32 位和 64 位有符号二进制补码整数,以及 char,其值为 16 位无符号整数表示 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 回答