java int size是固定还是变量?

时间:2011-02-19 02:56:18

标签: java

java中的整数大小是固定长度还是可变大小?

ex:1或10000这两个数字在分配期间是否占用相同的空间?

5 个答案:

答案 0 :(得分:25)

根据JLS,Java整数是32位(4个八位字节)。

  

整数类型byteshortintlong,其值为8位,16位,分别为32位和64位有符号二进制补码整数。

来源:JLS §4.2 Primitive Types and Values

答案 1 :(得分:7)

它的大小是固定的。从程序员的角度和机器的角度来看,Java中的所有内容都是32位。

描述JVM字节码格式的Java VM specification提到每个int是32位。 (旁白:boolean值可以占用任意数量的位,对象也是如此。)

答案 2 :(得分:3)

这是datasizes for the Java primitive types

有趣的是,boolean的大小没有明确定义,但通常是8位。

答案 3 :(得分:2)

intInteger具有固定大小。 BigInteger的大小可变。

答案 4 :(得分:2)

这取决于JVM的实现。

典型的实现中,boolean,byte,char,short和int将始终在堆栈上为32位,而long在堆栈上为64位。在典型的实现中,字节,字符,短路,整数和长整数将是它们在数组中的“原生”大小(分别为8,16,16,32和64位)。

典型的实现中,如果对齐允许,结构中整数的大小将是它们的原始大小。

当然,一些非常不寻常的实现可能会对结构使用可变长度整数,甚至可能在堆栈或数组中使用它们(但这更难以想象和更加模糊) - 但我当然没有看到任何这样做。