Есть ли разница для Integer.MAX_VALUE между 32-битной JVM и 64-битной JVM? - PullRequest
10 голосов
/ 21 октября 2011

Отличается ли значение Integer.MAX_VALUE между 32-битными JVM и 64-битными JVM?

Я компилирую класс Java, используя 32-битный JDK, и внедряю его на 64-битной машине. Я просто хочу убедиться, что могу положиться на обнаружение if (aNumber == Integer.MAX_VALUE).

Ответы [ 5 ]

12 голосов
/ 21 октября 2011

Нет.По определению Integer.MAX_VAlUE = 2^31 - 1

Integer.MAX_VALUE

3 голосов
/ 21 октября 2011

Нет.32-разрядный JDK создает 32-разрядные адреса для экземпляров, а 64-разрядный JDK создает 64-разрядные адреса для экземпляров объектов.Таким образом, Integer.MAX_VALUE - то же самое, потому что это просто значение, а не адрес объекта.:)

1 голос
/ 21 октября 2011

Эта константа имеет одно и то же значение независимо от того, является ли JVM, на которой выполняется код, 32-разрядной или 64-разрядной. Документация для Integer.MAX_VALUE описывает это значение как:

Константа, содержащая максимальное значение, которое может иметь int, 2 31 -1.

0 голосов
/ 23 июля 2013

то, на что похожи все 32-битные и 64-битные, - это количество областей памяти, на которые они могут ссылаться .. в случае 32-битного возможного числа адрес будет 2 ^ 32, а в случае 64-битного это 2 ^ 64.

Версия jvm не имеет ничего общего с Integer.MAX_VALUE, она останется прежней.

0 голосов
/ 21 октября 2011

Возможно, вы хотите избежать сравнения целых чисел с использованием знака = из-за:

Сравнения целых чисел (при условии, что aNumber является объектом класса java.lang.Integer)

и нет, разницы нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...