Выбор ответа Middle String и пул строк обновлено

Сколько объектов создаёт new String

Вопрос

Сколько объектов String может создать new String("abc"), если строка "abc" до этого не использовалась?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Два: литерал в пуле и новый объект в куче. Литерал "abc" при первом использовании попадает в пул (это один объект), а new создаёт ещё один объект с тем же содержимым.

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

  1. Один: объект в куче, литерал не создаётся
  2. Два: литерал в пуле и новый объект в кучеправильный ответ
  3. Один: объект в пуле, new его и вернёт
  4. Ни одного: строка будет взята из кеша компилятора

Разбор

Литерал "abc" при первом использовании попадает в пул (это один объект), а new создаёт ещё один объект с тем же содержимым. Если литерал уже был в пуле, создастся только один новый объект. Вариант «только в пуле» путает new String с литералом. Кеша компилятора, который отменит new, нет.

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

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

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