Статьи

Полный курс по языку Java — от установки JDK до многопоточности и HTTP-запросов

Строки

Страница 12 из 30 · 2026-10-25 · 3 мин чтения

Свойства 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"));    }}