Ответ 1
Нет. По определению Integer.MAX_VAlUE = 2^31 - 1
Значит ли значение Integer.MAX_VALUE
между 32-битными JVM и 64-битными JVM?
Я компилирую класс Java с использованием 32-битного JDK и развертываю его на 64-битной машине. Я просто хочу убедиться, что могу положиться на обнаружение if (aNumber == Integer.MAX_VALUE)
.
Нет. По определению Integer.MAX_VAlUE = 2^31 - 1
Нет. 32-разрядный JDK создает 32-разрядные адреса для экземпляров, а 64-разрядный JDK делает 64-разрядные адреса для экземпляров объектов. Таким образом, Integer.MAX_VALUE тот же, потому что это просто значение, а не адрес объекта.:)
Эта константа имеет одно и то же значение независимо от того, работает ли JVM-код, 32-разрядный или 64-разрядный. Документация для Integer.MAX_VALUE описывает это значение как:
Константа, содержащая максимальное значение a
int
, может иметь, 2 31 -1.
Вероятно, вы избежите сравнения целых чисел с использованием знака =
из-за:
Сравнение целых чисел (если aNumber является объектом класса java.lang.Integer
)
и нет, нет никакой разницы.
то, что все 32-битные и 64-битные напоминают количество мест памяти, на которые они могут ссылаться. В случае 32-битного возможного количества адресов будет 2 ^ 32, а в случае 64-битного - 2 ^ 64.
Версия jvm не имеет ничего общего с Integer.MAX_VALUE, она останется такой же.