Что выведет код Junior Основы: типы, обёртки, static спрашивают часто обновлено

Что выведет: кеш Integer и equals

Вопрос

Что выведет программа (Java 21)? Каждый вывод println с новой строки.

public class Main {
    public static void main(String[] args) {
        Integer a = 100, b = 100;
        Integer c = 1000, d = 1000;
        Long e = 100L;
        System.out.println(a == b);
        System.out.println(c == d);
        System.out.println(c.equals(d));
        System.out.println(a.equals(100L));
        System.out.println(e.equals(100L));
    }
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: true, false, true, false, true. a == b: 100 в кеше Integer.valueOf, один объект, true. c == d: 1000 вне кеша, разные объекты, false. c.equals(d) сравнивает значения: true. a.equals(100L): аргумент упакован в Long, а Integer.equals требует Integer, поэтому false.…

Что выведет

true
false
true
false
true

Разбор

a == b: 100 в кеше Integer.valueOf, один объект, true. c == d: 1000 вне кеша, разные объекты, false. c.equals(d) сравнивает значения: true. a.equals(100L): аргумент упакован в Long, а Integer.equals требует Integer, поэтому false. e.equals(100L): Long с Long, true.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.