String — текст
String — это текст: имя, сообщение, адрес. В Java строки неизменяемы: любой метод не меняет старую строку, а возвращает новую. Это сбивает новичков — поэтому результат всегда надо куда-то присвоить.
Самые частые методы
String s = "Hello";
| Метод | Что делает | Результат |
|---|---|---|
s.length() | длина строки | int |
s.toUpperCase() | в верхний регистр | String |
s.toLowerCase() | в нижний регистр | String |
s.charAt(0) | символ по индексу | char |
s.substring(1, 3) | вырезать часть | String |
s.equals("Hello") | сравнить по содержимому | boolean |
s.contains("ell") | содержит ли | boolean |
s.trim() | убрать пробелы по краям | String |
Копнуть глубже — полный набор
| Метод | Что делает | Результат |
|---|---|---|
s.split(",") | разделить по символу | String[] |
s.startsWith("H") | начинается с | boolean |
s.endsWith("o") | заканчивается на | boolean |
s.indexOf('e') | позиция символа (или -1) | int |
s.replace("l", "L") | заменить все вхождения | String |
s.isBlank() | пустая или одни пробелы | boolean |
Важно: s.equals("Hello") сравнивает содержимое, а == — ссылки (один ли это объект). Для строк почти всегда нужен equals.
Под капотом — для глубокого понимания
Строки кэшируются в String Pool: литералы "Hello" с одинаковым текстом ссылаются на один объект, поэтому "Hi" == "Hi" иногда true — но полагаться на это нельзя. Конкатенация в цикле (s += x) каждый раз создаёт новый объект — на больших объёмах используй StringBuilder, который меняет один буфер на месте.
🎤 Закрыл тему, если можешь объяснить:
• почему строки в Java неизменяемы;
• чем
• зачем нужен
• чем
equals отличается от == для строк;• зачем нужен
StringBuilder (если дошёл до 3-го слоя).