Integer i = 5, Integer g = 5. Сравниваем i == g. Что сравнивается и какой результат?

Для Integer оператор == сравнивает ссылки. При Integer i = 5 и Integer g = 5 результат true: boxing константы 5 использует гарантированно общий объект.

Короткий ответ

Что ответить на собеседовании

Для Integer оператор == сравнивает ссылки. При Integer i = 5 и Integer g = 5 результат true: boxing константы 5 использует гарантированно общий объект.

Подробный разбор

Ответ с пояснениями

Для Integer оператор == сравнивает ссылки. При Integer i = 5 и Integer g = 5 результат true: boxing константы 5 использует гарантированно общий объект.

Это не означает, что == над любыми Integer сравнивает числовые значения. Для значений вне гарантированного диапазона кеширования полагаться на идентичность нельзя. Для сравнения значений применяют equals или Objects.equals, если возможен null. Если один операнд имеет примитивный тип int, Java может распаковать Integer и сравнить числа; распаковка null вызовет NullPointerException. Вопрос проверяет различие identity, equality и autoboxing, а не только знание кеша.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее