Выбор ответа Middle String и пул строк обновлено
final и константное выражение
Вопрос
Что выведет код?
String s = "ab";
final String f = "a";
String v = "a";
System.out.println((s == f + "b") + " " + (s == v + "b"));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: true false. f объявлена final и инициализирована литералом, значит f + "b" константное выражение: компилятор склеивает его в "ab" и берёт из пула.
Варианты ответа
false falsetrue falseправильный ответtrue truefalse true
Разбор
f объявлена final и инициализирована литералом, значит f + "b" константное выражение: компилятор склеивает его в "ab" и берёт из пула. Результат совпадает с s: true. v не final, склейка происходит в рантайме и создаёт новый объект: false.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.