Выбор ответа Middle String и пул строк обновлено
Что делает intern
Вопрос
Что делает s.intern()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Отдаёт строку из пула с тем же содержимым, добавив s, если её нет. intern ищет в пуле строку, равную по equals.
Варианты ответа
- Всегда создаёт копию строки в пуле и возвращает эту копию
- Отдаёт строку из пула с тем же содержимым, добавив
s, если её нетправильный ответ - Переносит строку из кучи в Metaspace, где хранится пул строк
- Делает строку неизменяемой и запрещает дальнейшие изменения
Разбор
intern ищет в пуле строку, равную по equals. Если нашёл, возвращает её, если нет, добавляет текущую строку и возвращает её же. Копию не создаёт. Пул строк с Java 7 находится в куче, а не в PermGen или Metaspace. String неизменяем и без intern.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет: методы String не меняют строку
Следующий вопрос
Частоты букв по убыванию