java int size是固定还是变量?
java中的整数大小是固定长度还是可变大小?
例如:1或10000这两个数字在分配期间是否占用相同的空间?
根据JLS,Java整数是32位(4个八位字节)。
整数类型是
byte
,short
,int
和long
,其值分别为8位,16位,32位和64位二进制补码整数。
资料来源: JLS§4.2原始类型和价值观
它的大小是固定的。 Java中的所有内容都是32位,从程序员的角度来看都是如此。
描述JVM字节码格式的Java VM规范提到每个int
是32位。 (旁白: boolean
值可以占用任意数量的位,对象也是如此。)
这是Java原始类型的数据集 。
有趣的是,这里boolean
的大小没有明确定义,但通常是8位。
int
或Integer
具有固定大小。 BigInteger
大小可变。
它取决于JVM实现。
在典型的实现中,boolean,byte,char,short和int将始终在堆栈上为32位,而long在堆栈上为64位。 在典型的实现中,字节,字符,短路,整数和长整数将是它们在数组中的“本机”大小(即分别为8,16,16,32和64位)。
在典型的实现中,如果对齐允许,结构内的整数的大小将是它们的原始大小。
当然,一些非常不寻常的实现可能会对结构使用可变长度整数,甚至在堆栈或数组中使用它们(但这更难以想象和更加模糊) – 但我当然没有看到任何这样做。