32位JVM和64位JVM之间的Integer.MAX_VALUE有区别吗?

时间:2011-10-21 10:07:29

标签: java integer

32位JVM和64位JVM之间Integer.MAX_VALUE的值是否不同?

我正在使用32位JDK编译Java类并将其部署在64位机器上。我只是想确保我可以依赖于检测if (aNumber == Integer.MAX_VALUE)

5 个答案:

答案 0 :(得分:12)

没有。根据定义Integer.MAX_VAlUE = 2^31 - 1

Integer.MAX_VALUE

答案 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)

您可能希望避免使用=符号比较整数,原因如下:

Comparing Integers(前提是aNumber是类java.lang.Integer的对象)

并且不,没有区别。

答案 4 :(得分:0)

所有32位和64位类似的是它们可以引用的存储器位置的数量。在32位可能的情况下,地址的数量将是2 ^ 32而在64位的情况下,它是2 ^ 64。

jvm版本与Integer.MAX_VALUE无关,它将保持不变。

相关问题