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"
// 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
// 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
}
""";
Форматы:
%d — int / long%f — float / double%.2f — 2 знака после запятой%s — String%b — boolean%c — char%n — перенос строки%5d — ширина 5 символов%-5d — выравнивание влево// Проверить, что строка — число
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"