Есть ли разница для Integer.MAX_VALUE между 32-битной JVM и 64-битной JVM?

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

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

Ответ 1

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

Integer.MAX_VALUE

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

и нет, нет никакой разницы.

Ответ 5

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

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