Ответ
Класс java.lang.String представляет неизменяемую (immutable) последовательность символов.
Основные свойства и особенности:
-
Неизменяемость (Immutability): Это фундаментальное свойство. После создания строку нельзя изменить. Все методы, которые кажутся изменяющими строку, на самом деле возвращают новый объект.
String str = "Hello"; str.concat(" World"); // Возвращает новую строку "Hello World" System.out.println(str); // Остается "Hello" -
String Pool: Специальная область в heap memory для хранения уникальных строковых литералов. Это оптимизация памяти.
- Литералы (
"text") интернируются (interned) и помещаются в пул. new String("text")создает новый объект вне пула.- Метод
intern()позволяет поместить строку в пул или получить ссылку на уже существующую там.
- Литералы (
-
Сравнение строк:
==— проверяет, ссылаются ли переменные на один и тот же объект в памяти..equals(Object obj)— сравнивает символьное содержимое строк.
-
Важные методы:
length(),isEmpty(),charAt(int index),equals(),compareTo(),substring(),contains(),replace(),split(),toCharArray().
Почему строки неизменяемы? Это обеспечивает безопасность (например, при использовании в качестве ключа в HashMap), потокобезопасность (не требуется синхронизация) и позволяет использовать String Pool.
Для конкатенации или интенсивного изменения используйте StringBuilder (не потокобезопасный) или StringBuffer (потокобезопасный).