Строка в Java представлена классом String
. Он содержит массив типа char
(char[] value
) и целочисленное поле int hash
, которое кэширует хеш-код строки.
Ключевые особенности:
String
не может быть изменен. Любая операция, изменяющая строку (например, конкатенация), создает новый объект String
. Это делает строки потокобезопасными и позволяет использовать их в качестве ключей в хеш-картах (HashMap
)."hello"
), JVM сначала проверяет, существует ли такая строка в пуле. Если да, возвращается ссылка на существующий объект. Если нет, создается новый объект и добавляется в пул. Для строк, созданных с помощью new String(...)
, новый объект всегда создается вне пула. Метод intern()
можно использовать, чтобы добавить такую строку в пул или получить ссылку на соответствующую строку из пула.char
. Начиная с Java 9, для экономии памяти для строк, состоящих только из однобайтовых символов (Latin-1), используется массив byte
(byte[] value
) и флаг кодировки (coder
). Это называется Compact Strings. Для строк с символами, требуюСтрока в Java представлена классом String
. Он содержит массив типа char
(char[] value
) и целочисленное поле int hash
, которое кэширует хеш-код строки.
Ключевые особенности:
String
не может быть изменен. Любая операция, изменяющая строку (например, конкатенация), создает новый объект String
. Это делает строки потокобезопасными и позволяет использовать их в качестве ключей в хеш-картах (HashMap
)."hello"
), JVM сначала проверяет, существует ли такая строка в пуле. Если да, возвращается ссылка на существующий объект. Если нет, создается новый объект и добавляется в пул. Для строк, созданных с помощью new String(...)
, новый объект всегда создается вне пула. Метод intern()
можно использовать, чтобы добавить такую строку в пул или получить ссылку на соответствующую строку из пула.char
. Начиная с Java 9, для экономии памяти для строк, состоящих только из однобайтовых символов (Latin-1), используется массив byte
(byte[] value
) и флаг кодировки (coder
). Это называется Compact Strings. Для строк с символами, требуюЗарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.