谁决定Java中的数据类型大小

7

在Java中,是谁决定诸如int之类的数据类型的大小?JVM、操作系统还是处理器?

int类型的大小为4个字节。无论操作系统或处理器如何,它的大小始终为4个字节吗?

3个回答

15

Java语言规范决定了它们的大小。无论在哪个虚拟机、操作系统或处理器上,它们的大小都是相同的。如果它们不相同,那就不再是Java。


2

1
尽管Java规范规定了每种类型实际使用的位数,但默认的32位JVM在内存中填充了一些类型,使用32位空间来存储值,即使这些值不需要那么多的空间。它们仍然表现得(关于程序)好像它们占用了它们真实的存储量,但使用的空间仍然要大得多。
其他JVM可以以不同的方式执行此操作,例如,它们可以仅使用一个比特存储布尔数组中的每个值,而不是每个值使用32位。
因此,尽管int的大小始终显示为32位,因为它总是在32位处环绕并且只能容纳32位值,但JVM确实有内部使用64位空间或某些硬件和实现所依赖的其他数字来存储它的选项。
此外,浮点值在这方面实际上要少受限制得多 - 尽管 floatdouble 的规范确实要求它们使用特定格式,但两个不同库 java.lang.Mathjava.lang.StrictMath 的存在(有关说明,请参见java.lang.Math和java.lang.StrictMath之间的区别是什么?)是一个明显的例子。使用java.lang.Math 不需要将这些函数的中间计算存储在任何特定方式中,也不需要使用特定数量的位来计算所有内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接