Что выведет код Junior String и пул строк спрашивают часто обновлено

Что выведет: пул строк и intern

Вопрос

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

public class Main {
    public static void main(String[] args) {
        String a = "java";
        String b = "ja" + "va";
        String part = "ja";
        String c = part + "va";
        String d = new String("java");
        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println(a == c.intern());
        System.out.println(a == d);
        System.out.println(a.equals(d));
    }
}

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

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

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

Коротко

Код выведет: true, false, true, false, true. "ja" + "va" склеивается компилятором и берётся из пула: true. part + "va" склеивается в рантайме, новый объект: false. intern() возвращает экземпляр из пула: true. new String всегда новый объект: false.

Что выведет

true
false
true
false
true

Разбор

"ja" + "va" склеивается компилятором и берётся из пула: true. part + "va" склеивается в рантайме, новый объект: false. intern() возвращает экземпляр из пула: true. new String всегда новый объект: false. По содержимому все равны: true.

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

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

Термины по теме