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

Что делает intern

Вопрос

Что делает s.intern()?

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

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

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

Коротко

Правильный ответ: Отдаёт строку из пула с тем же содержимым, добавив s, если её нет. intern ищет в пуле строку, равную по equals.

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

  1. Всегда создаёт копию строки в пуле и возвращает эту копию
  2. Отдаёт строку из пула с тем же содержимым, добавив s, если её нетправильный ответ
  3. Переносит строку из кучи в Metaspace, где хранится пул строк
  4. Делает строку неизменяемой и запрещает дальнейшие изменения

Разбор

intern ищет в пуле строку, равную по equals. Если нашёл, возвращает её, если нет, добавляет текущую строку и возвращает её же. Копию не создаёт. Пул строк с Java 7 находится в куче, а не в PermGen или Metaspace. String неизменяем и без intern.

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

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

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