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

Как String хранится в памяти

Вопрос

Как хранится содержимое String в Java 21?

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

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

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

Коротко

Правильный ответ: В byte[] с флагом: Latin-1 по байту на символ, иначе UTF-16. С Java 9 (JEP 254, Compact Strings) у String поле byte[] value и поле coder.

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

  1. В byte[] с флагом: Latin-1 по байту на символ, иначе UTF-16правильный ответ
  2. В char[], по два байта на любой символ, как было всегда
  3. В byte[] в кодировке UTF-8 с переменной длиной символа
  4. В int[] кодовых точек, чтобы эмодзи занимали один элемент

Разбор

С Java 9 (JEP 254, Compact Strings) у String поле byte[] value и поле coder. Если все символы помещаются в Latin-1, хранится по байту на символ, иначе UTF-16 по два байта. До Java 9 был char[]. UTF-8 внутри не используется: доступ по индексу стал бы O(n).

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

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

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