Строки (String)

Быстрая навигация


Создание и сравнение

String s1 = "hello";               // литерал (в пуле)
String s2 = new String("hello");   // новый объект

// ВСЕГДА сравниваем через equals
s1.equals(s2);           // true  — по значению
s1.equalsIgnoreCase(s2); // true  — без учёта регистра
s1 == s2;                // false — по ссылке (не используй для строк!)

Основные методы

String s = "Hello, World!";

s.length()              // 13
s.isEmpty()             // false
s.isBlank()             // false (только пробелы/пусто)

s.charAt(0)             // 'H'
s.indexOf('o')          // 4  (первое вхождение)
s.lastIndexOf('o')      // 8  (последнее)
s.indexOf("World")      // 7

s.contains("World")     // true
s.startsWith("Hello")   // true
s.endsWith("!")         // true

Изменение строки

String s = "  Hello, World!  ";

s.trim()                // "Hello, World!" (пробелы по краям)
s.strip()               // то же, но Unicode-aware (Java 11+)

s.toUpperCase()         // "  HELLO, WORLD!  "
s.toLowerCase()         // "  hello, world!  "

s.replace('l', 'r')     // "  Herro, Worrd!  "
s.replace("World", "Java") // "  Hello, Java!  "
s.replaceAll("\\s+", "_")  // регулярка — пробелы → _

Подстрока

String s = "Hello, World!";

s.substring(7)          // "World!"  (от индекса до конца)
s.substring(7, 12)      // "World"   (от 7 до 12, не включая 12)

Разбивка и сборка

// split — разбить на массив
String csv = "one,two,three";
String[] parts = csv.split(",");    // ["one", "two", "three"]

String text = "a  b   c";
String[] words = text.split("\\s+"); // по любым пробелам

// join — собрать из массива
String joined = String.join(", ", "a", "b", "c");  // "a, b, c"
String joined2 = String.join("-", parts);           // "one-two-three"

Конвертация

// Число → String
String s1 = String.valueOf(42);      // "42"
String s2 = Integer.toString(42);    // "42"
String s3 = "" + 42;                 // "42"  (неявно)

// String → число
int n   = Integer.parseInt("42");    // 42
long l  = Long.parseLong("999");     // 999
double d = Double.parseDouble("3.14"); // 3.14

// Осторожно — если строка не число:
Integer.parseInt("abc");   // NumberFormatException!

// String → char[]
char[] chars = "hello".toCharArray(); // ['h','e','l','l','o']

// char[] → String
String s = new String(chars);         // "hello"

StringBuilder — для изменения строк в цикле

// String в цикле — каждый раз новый объект (медленно)
String result = "";
for (int i = 0; i < 1000; i++) {
    result += i;   // плохо!
}

// StringBuilder — один объект (быстро)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append(i);
}
String result = sb.toString();
StringBuilder sb = new StringBuilder("Hello");

sb.append(", World");       // "Hello, World"
sb.insert(5, "!");          // "Hello!, World"
sb.delete(5, 6);            // "Hello, World"
sb.reverse();               // "dlroW ,olleH"
sb.replace(0, 5, "Hi");     // "Hi, World" (после реверса пример условный)

sb.length()                 // длина
sb.charAt(0)                // символ
sb.toString()               // → String

String.format и printf

// format — возвращает строку
String s = String.format("Name: %s, Age: %d", "Alice", 30);
// "Name: Alice, Age: 30"

// printf — сразу печатает
System.out.printf("Pi = %.2f%n", 3.14159);
// "Pi = 3.14"

// Text block (Java 15+)
String json = """
        {
            "name": "Alice",
            "age": 30
        }
        """;

Форматы:


Полезные трюки

// Проверить, что строка — число
boolean isNum = "42".matches("-?\\d+");   // true

// Повторить строку (Java 11+)
"ab".repeat(3);   // "ababab"

// Символы строки
for (char c : "hello".toCharArray()) {
    System.out.println(c);
}

// Перебор с индексом
String s = "hello";
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
}

// Сортировка строки по символам
char[] chars = "dcba".toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);   // "abcd"
← Меню