Свойства String
Строки в Java неизменяемы: любой метод возвращает новую строку, а исходная не меняется.
public class StringImmutable { public static void main(String[] args) { String s = "привет"; s.toUpperCase(); System.out.println(s); s = s.toUpperCase(); System.out.println(s); }}Вывод: привет, затем ПРИВЕТ.
Основные методы
public class StringMethods { public static void main(String[] args) { String text = " Hello, Java World! "; System.out.println(text.length()); System.out.println(text.trim()); System.out.println(text.strip()); System.out.println(text.isBlank()); System.out.println(text.toLowerCase()); System.out.println(text.toUpperCase()); String t = text.trim(); System.out.println(t.charAt(0)); System.out.println(t.indexOf("Java")); System.out.println(t.lastIndexOf('o')); System.out.println(t.contains("World")); System.out.println(t.startsWith("Hello")); System.out.println(t.endsWith("!")); System.out.println(t.substring(7)); System.out.println(t.substring(7, 11)); System.out.println(t.replace("Java", "Kotlin")); System.out.println("ab".repeat(3)); }}indexOf возвращает -1, если подстрока не найдена.
Сравнение
public class StringEquality { public static void main(String[] args) { String a = "java"; String b = "java"; String c = new String("java"); System.out.println(a == b); System.out.println(a == c); System.out.println(a.equals(c)); System.out.println("Java".equalsIgnoreCase("JAVA")); System.out.println("apple".compareTo("banana")); }}Оператор == сравнивает ссылки, поэтому для содержимого всегда используйте equals. compareTo возвращает отрицательное число, ноль или положительное число по лексикографическому порядку.
Разбиение и объединение
import java.util.Arrays;public class SplitJoin { public static void main(String[] args) { String csv = "яблоко,груша,слива"; String[] parts = csv.split(","); System.out.println(Arrays.toString(parts)); String joined = String.join(" | ", parts); System.out.println(joined); String[] words = "один два три".split("\\s+"); System.out.println(words.length); }}Аргумент split — регулярное выражение.
Символы
public class Chars { public static void main(String[] args) { String word = "Java2026"; int letters = 0; int digits = 0; for (char c : word.toCharArray()) { if (Character.isLetter(c)) { letters++; } else if (Character.isDigit(c)) { digits++; } } System.out.println(letters + " " + digits); }}StringBuilder
Конкатенация в цикле создает много временных строк. Для сборки текста по частям используйте StringBuilder:
public class Builder { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 5; i++) { sb.append(i).append(", "); } sb.setLength(sb.length() - 2); System.out.println(sb); sb.insert(0, "["); sb.append("]"); System.out.println(sb); System.out.println(sb.reverse()); System.out.println(sb.toString().length()); }}Основные методы: append, insert, delete, deleteCharAt, reverse, setCharAt, toString.
Форматирование
public class Formatting { public static void main(String[] args) { String s = String.format("%s: %d шт. по %.2f руб.", "Товар", 3, 19.5); System.out.println(s); String t = "%-10s|%8.2f|".formatted("Кофе", 3.5); System.out.println(t); System.out.println(String.format("%05d", 42)); System.out.println(String.format("%,d", 1234567)); }}Текстовые блоки
Многострочные строки (Java 15+):
public class TextBlock { public static void main(String[] args) { String json = """ { "name": "Anna", "age": 25 } """; System.out.println(json); }}Отступ определяется положением закрывающих кавычек.
Преобразования
public class Conversions { public static void main(String[] args) { int n = Integer.parseInt("42"); double d = Double.parseDouble("2.5"); String s1 = String.valueOf(100); String s2 = "" + 3.14; char[] chars = "abc".toCharArray(); String back = new String(chars); System.out.println(n + " " + d + " " + s1 + " " + s2 + " " + back); }}Если строка не является числом, parseInt бросает NumberFormatException.
Практика: палиндром
public class Palindrome { static boolean isPalindrome(String text) { String clean = text.toLowerCase().replaceAll("[^a-zа-я0-9]", ""); return new StringBuilder(clean).reverse().toString().equals(clean); } public static void main(String[] args) { System.out.println(isPalindrome("А роза упала на лапу Азора")); System.out.println(isPalindrome("Java")); }}