2011-10-21 16 views

risposta

12

No. Per definizione Integer.MAX_VAlUE = 2^31 - 1

Integer.MAX_VALUE

+0

Va oltre: la piattaforma * compilation * rende ** nessuna differenza **: l'output sarà lo stesso. In un mondo ideale anche la piattaforma * runtime * non farebbe alcuna differenza, ma qui potrebbero esserci differenze minori. –

3

No. Il JDK a 32 bit crea indirizzi a 32 bit per le istanze e il JDK a 64 bit crea indirizzi a 64 bit per le istanze dell'oggetto. Quindi, Integer.MAX_VALUE è lo stesso, perché è solo un valore, non un indirizzo dell'oggetto. :)

+0

Si noti che una JVM * a 64 bit * può * utilizzare riferimenti a 32 bit. Vedi [CompressedOops] (http://wikis.sun.com/display/HotSpotInternals/CompressedOops) per i dettagli. –

+0

Sì, è perfettamente giusto. Hai dimenticato di aggiungerlo. :) –

1

Questa costante ha lo stesso valore indipendentemente dal fatto che il codice JVM è in esecuzione su è 32 bit o 64 bit. Il documentation for Integer.MAX_VALUE descrive questo valore come:

A tiene il valore massimo costante un int può avere, 2 -1.

0

probabilmente si vuole evitare di numeri interi di confronto utilizzando = segno a causa di:

Comparing Integers (fornito aNumber è un oggetto della classe java.lang.Integer)

e no, non c'è nessuna differenza.

+0

grazie per le tue informazioni extra. mi chiedo solo in quale situazione abbiamo bisogno di fare riferimento al controllo su (Intero == Integer)? Non dovremmo aver sempre bisogno del controllo del valore? Quindi, perché qualcuno non sovraccaricare l'operatore '==' su Intero? – GaryX

0

ciò che tutti i 32 bit e 64 bit assomiglia è il numero di posizioni di memoria a cui possono fare riferimento .. in caso di 32 bit il numero di indirizzo possibile sarà 2^32 e nel caso di 64 bit è 2^64.

La versione jvm non ha nulla a che fare con Integer.MAX_VALUE, rimarrà la stessa.

Problemi correlati