При сравнении Integer a = 127
и int b = 127
с использованием оператора ==
, результат будет true
. Это происходит из-за автоупаковки (autoboxing
) int b
в объект Integer
, а также потому, что значение 127 находится в диапазоне кэшированных объектов Integer
(по умолчанию от -128 до 127). Java использует пул объектов для этих значений, поэтому a
и упакованное b
ссылаются на один и тот же объект.
При сравнении Integer a1 = 128
и int b1 = 128
, результат оператора ==
будет false
. Хотя b1
также автоматически упаковывается в объект Integer
, значение 128 находится вне диапазона кэшированных значений. Следовательно, при автоупаковке создается новый объект Integer
для b1
. Ссылки a1
и упакованной b1
указывают на разные объекты в куче, даже если их числовые значения идентичны.
Для сравнения значений объектов-оберток (таких как Integer
), следует использовать метод equals()
.
java
При сравнении Integer a = 127
и int b = 127
с использованием оператора ==
, результат будет true
. Это происходит из-за автоупаковки (autoboxing
) int b
в объект Integer
, а также потому, что значение 127 находится в диапазоне кэшированных объектов Integer
(по умолчанию от -128 до 127). Java использует пул объектов для этих значений, поэтому a
и упакованное b
ссылаются на один и тот же объект.
При сравнении Integer a1 = 128
и int b1 = 128
, результат оператора ==
будет false
. Хотя b1
также автоматически упаковывается в объект Integer
, значение 128 находится вне диапазона кэшированных значений. Следовательно, при автоупаковке создается новый объект Integer
для b1
. Ссылки a1
и упакованной b1
указывают на разные объекты в куче, даже если их числовые значения идентичны.
Для сравнения значений объектов-оберток (таких как Integer
), следует использовать метод equals()
.
java
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.