java int size是固定还是变量?

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

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

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

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

资料来源: JLS§4.2原始类型和价值观

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

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

这是Java原始类型的数据集 。

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

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

它取决于JVM实现。

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

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

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