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