Выбор ответа Middle String и пул строк обновлено
Сколько объектов создаёт new String
Вопрос
Сколько объектов String может создать new String("abc"), если строка "abc" до этого не использовалась?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Два: литерал в пуле и новый объект в куче. Литерал "abc" при первом использовании попадает в пул (это один объект), а new создаёт ещё один объект с тем же содержимым.
Варианты ответа
- Один: объект в куче, литерал не создаётся
- Два: литерал в пуле и новый объект в кучеправильный ответ
- Один: объект в пуле,
newего и вернёт - Ни одного: строка будет взята из кеша компилятора
Разбор
Литерал "abc" при первом использовании попадает в пул (это один объект), а new создаёт ещё один объект с тем же содержимым. Если литерал уже был в пуле, создастся только один новый объект. Вариант «только в пуле» путает new String с литералом. Кеша компилятора, который отменит new, нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.