Что выведет программа при сравнении объектов Integer оператором ==

Первая строка — a == b: true. Вторая обычно c == d: false, но для 200 результат сравнения ссылок не гарантируется: cache может быть расширен.

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

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

Первая строка — a == b: true. Вторая обычно c == d: false, но для 200 результат сравнения ссылок не гарантируется: cache может быть расширен.

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

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

Условие

Определите, какой результат будет напечатан в консоль при запуске следующего кода:

public class Test2 {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 100;

        Integer c = 200;
        Integer d = 200;

        System.out.println("a == b: " + (a == b));
        System.out.println("c == d: " + (c == d));
    }
}

Ответ

Первая строка — a == b: true. Вторая обычно c == d: false, но для 200 результат сравнения ссылок не гарантируется: cache может быть расширен.

100 входит в гарантированный диапазон boxing констант от −128 до 127. Оператор == между двумя Integer проверяет идентичность объектов, а не равенство чисел. Поэтому поведение вне диапазона нельзя использовать как часть логики программы. Для числового равенства выбирайте equals или Objects.equals при возможных null.

Источник: docs.oracle.com.

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

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

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

Подробнее