Выбор ответа 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" и берёт из пула.

Варианты ответа

  1. false false
  2. true falseправильный ответ
  3. true true
  4. false true

Разбор

f объявлена final и инициализирована литералом, значит f + "b" константное выражение: компилятор склеивает его в "ab" и берёт из пула. Результат совпадает с s: true. v не final, склейка происходит в рантайме и создаёт новый объект: false.

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

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

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