Назад к вопросам
Junior
68
questionbank
Расскажите о классе String в языке программирования Java.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Класс String в Java представляет неизменяемую последовательность символов.
Основные характеристики и особенности:
- Неизменяемость (Immutability): После создания объекта
String, его содержимое не может быть изменено. Любая операция, которая кажется модифицирующей строку (например, конкатенация), на самом деле создает новый объектString. Это повышает безопасность и потокобезопасность. - Перегрузка оператора
+: Для строк перегружен оператор+для выполнения конкатенации. - Два способа создания:
- С помощью строкового литерала (String literal):
String s1 = "Hello";- создается в пуле строк (String Pool). - С использованием оператора
new:String s2 = new String("World");- создается в куче (Heap), может быть создан новый объект даже при наличии такого же литерала в пуле.
- С помощью строкового литерала (String literal):
- Пул строк (String Pool): Область в куче, где хранятся строковые литералы для оптимизации памяти. При создании строкового литерала JVM сначала проверяет пул. Если такая строка уже существует, возвращается ссылка на существующий объект. Если нет, создается новый объект и помещается в пул.
- Основные полезные методы:
length(): Возвращает длину строки.charAt(int index): Возвращает символ по указанному индексу.substring(int beginIndex, int endIndex): Возвращает подстроку.contains(CharSequence s): Проверяет, содержит ли строка указанную последовательность символов.indexOf(int ch)/indexOf(String str): Возвращает индекс первого вхождения символа или подстроки.equals(Object anObject): Сравнивает содержимое строк. Важно использоватьequals()для сравнения содержимого, а не==, который сравнивает ссылки на объекты.equalsIgnoreCase(String anotherString): Сравнивает строки без учета регистра.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Заменяет символы или подстроки.trim(): Удаляет пробелы в начале и конце строки.split(String regex): Разбивает строку на подстроки по разделителю.
Пример создания и некоторых операций:
// Создание с использованием литерала
String str1 = "Java";
// Создание с использованием new
String str2 = new String("Java");
// Конкатенация
String str3 = str1 + " is amazing";
// Сравнение содержимого (используем equals, а не ==)
boolean areEqualContent = str1.equals(str2); // true
// Сравнение ссылок (используем ==)
boolean areEqualReference = (str1 == str2); // false
// Длина строки
int length = str3.length();
// Получение символа
char firstChar = str1.charAt(0); // 'J'
// Проверка на вхождение
boolean containsIs = str3.contains("is"); // true
Неизменяемость String может приводить к неэффективности при многократных модификациях строки, так как каждый раз создается новый объект. Для таких сценариев предпочтительнее использовать StringBuilder или StringBuffer.