2011-10-21 15 views

Respuesta

12

No. Por definición Integer.MAX_VAlUE = 2^31 - 1

Integer.MAX_VALUE

+0

Va más allá: la plataforma * compilation * hace ** ninguna diferencia en absoluto **: la salida será la misma. En un mundo ideal, incluso la plataforma * runtime * no haría ninguna diferencia, pero podría haber pequeñas diferencias aquí. –

3

No. El JDK de 32 bits realiza las direcciones de 32 bits para las instancias, y el JDK de 64 bits realiza las direcciones de 64 bits para las instancias del objeto. Por lo tanto, Integer.MAX_VALUE es el mismo, porque es solo un valor, no una dirección de objeto. :)

+0

Tenga en cuenta que una JVM * de 64 bits * puede * utilizar referencias de 32 bits. Ver [CompressedOops] (http://wikis.sun.com/display/HotSpotInternals/CompressedOops) para más detalles. –

+0

Sí, eso está perfectamente bien. Olvidé agregarlo :) –

1

Esta constante tiene el mismo valor independientemente de si la JVM que el código se ejecuta en es de 32 bits o 64 bits. El documentation for Integer.MAX_VALUE describe este valor como:

A sosteniendo el valor máximo constante una int puede tener, 2 -1.

0

es probable que desee para evitar que comparan el uso de números enteros = señal debido a:

Comparing Integers (siempre unNumero Es un objeto de la clase java.lang.Integer)

y no, no hay ninguna diferencia.

+0

gracias por su información adicional. ¿Me pregunto en qué situación necesitamos hacer referencia al control (Integer == Integer)? ¿No deberíamos todos siempre solo necesitamos la verificación de valor? Entonces, ¿por qué alguien no sobrecarga al operador '==' en Integer? – GaryX

0

lo que se parece a 32 bits y 64 bits es el número de ubicaciones de memoria a las que pueden hacer referencia ... en el caso de 32 bits, el número de direcciones posibles será 2^32 y en el caso de 64 bits será 2^64.

La versión de jvm no tiene nada que ver con Integer.MAX_VALUE, se mantendrá igual.

Cuestiones relacionadas