【发布时间】:2011-12-12 11:18:08
【问题描述】:
Integer.MAX_VALUE 的值在 32 位 JVM 和 64 位 JVM 之间是否不同?
我正在使用 32 位 JDK 编译 Java 类并将其部署在 64 位机器上。我只是想确保我可以依赖检测if (aNumber == Integer.MAX_VALUE)。
【问题讨论】:
Integer.MAX_VALUE 的值在 32 位 JVM 和 64 位 JVM 之间是否不同?
我正在使用 32 位 JDK 编译 Java 类并将其部署在 64 位机器上。我只是想确保我可以依赖检测if (aNumber == Integer.MAX_VALUE)。
【问题讨论】:
没有。 32 位 JDK 为实例创建 32 位地址,而 64 位 JDK 为对象实例创建 64 位地址。因此, Integer.MAX_VALUE 是相同的,因为它只是一个值,而不是对象地址。 :)
【讨论】:
没有。根据定义Integer.MAX_VAlUE = 2^31 - 1
【讨论】:
无论运行代码的 JVM 是 32 位还是 64 位,此常量都具有相同的值。 documentation for Integer.MAX_VALUE 将此值描述为:
一个保持
int可以拥有的最大值的常量,231-1。
【讨论】:
【讨论】:
所有 32 位和 64 位的相似之处在于它们可以引用的内存位置的数量。在 32 位的情况下,可能的地址数为 2^32,在 64 位的情况下为 2^64。
jvm 版本与 Integer.MAX_VALUE 无关,保持不变。
【讨论】: