2011-10-21 135 views

回答

12

號根據定義Integer.MAX_VAlUE = 2^31 - 1

Integer.MAX_VALUE

+0

它比這更進一步:*編譯*平臺使**沒有區別**:輸出將是相同的。在理想的世界中,即使* runtime *平臺也沒有什麼區別,但是這裏可能會有細微的差異。 –

3

否。32位JDK爲實例創建32位地址,64位JDK爲對象實例創建64位地址。因此,Integer.MAX_VALUE是相同的,因爲它只是一個值,而不是一個對象地址。 :)

+0

請注意,64位JVM *可以使用32位引用。有關詳細信息,請參閱[CompressedOops](http://wikis.sun.com/display/HotSpotInternals/CompressedOops)。 –

+0

是的,這是完全正確的。忘了添加它。 :) –

1

此常數具有不管代碼是否JVM運行上的相同的值是32位或64位。所述documentation for Integer.MAX_VALUE描述該值作爲:

的常量保持最大值的int可以具有2 -1。

0

你可能想避免比較整數使用=跡象,因爲:

Comparing Integers(提供aNumber的是java.lang.Integer類的對象)

,沒有,沒有任何區別。

+0

感謝您的額外信息。只是想知道在什麼情況下我們需要引用檢查(Integer == Integer)?我們不應該總是隻需要價值檢查嗎?那麼爲什麼沒有人在Integer上重載運算符'=='? – GaryX

0

所有32位和64位類似的是他們可以引用的存儲位置的數量。在32位可能的地址數量的情況下將是2^32,並且在64位的情況下它是2^64。

jvm版本與Integer.MAX_VALUE無關,它將保持不變。