Строки (String)
Строка – это текст: слово, фраза, предложение, любое сообщение, состоящее из символов.
В Java для работы с текстом используется тип String.
Строки удобно использовать для имён, названий, сообщений, вводимых пользователем.
Краткая сводка
Строковая переменная объявляется так:
Примеры:
Важно:
- строка записывается в двойных кавычках:
"Java"; - тип
Stringпишется с большой буквы; - строка может быть и пустой (
"").
Создание строк
Основной способ – строковый литерал:
Можно собирать строку из чисел и других значений:
int age = 12;
double score = 4.5;
String info = "Возраст: " + age + ", балл: " + score;
// "Возраст: 12, балл: 4.5"
Есть и другие способы (через String.valueOf, конструкторы и т.п.), но в большинстве задач хватает литералов и конкатенации.
Длина строки и доступ к символам
У строки есть длина – количество символов.
Нумерация символов начинается с 0.
String s = "Java";
int n = s.length(); // 4
char c0 = s.charAt(0); // 'J'
char c1 = s.charAt(1); // 'a'
Полезно помнить:
- последний символ имеет индекс
length() - 1; - если обратиться к несуществующему индексу, будет ошибка выполнения.
Конкатенация (склейка) строк
Строки можно склеивать оператором +.
Числа и другие типы при этом автоматически превращаются в текст.
String firstName = "Иван";
String lastName = "Петров";
String fullName = firstName + " " + lastName;
// "Иван Петров"
С числами:
Сравнение строк
Строки нельзя сравнивать по содержимому через ==.
Для сравнения текста используются методы equals и equalsIgnoreCase.
String s1 = "hello";
String s2 = "hello";
String s3 = "Hello";
boolean a = s1.equals(s2); // true
boolean b = s1.equals(s3); // false
boolean c = s1.equalsIgnoreCase(s3); // true
== проверяет, совпадают ли ссылки (адреса), а не текст.
Для задач с текстом по содержимому всегда используем equals.
Подстроки и поиск
Часть строки можно получить методом substring:
Индексы считаются с 0, правый предел (endIndex) не входит.
Поиск подстроки:
String s = "abracadabra";
int p1 = s.indexOf("bra"); // 1
int p2 = s.indexOf("cad"); // 4
int p3 = s.indexOf("xyz"); // -1 (нет вхождения)
Разбиение строки
Метод split разбивает строку на части по разделителю и возвращает массив строк.
Частый случай – разделение по пробелу или запятой.
Чтение строк с клавиатуры
Через Scanner строки читают так:
Scanner in = new Scanner(System.in);
String word = in.next(); // одно слово (до пробела)
String line = in.nextLine(); // вся строка целиком
Если перед nextLine() уже читали числа (nextInt, nextDouble и т.п.), между ними часто нужна «промывка» строки:
int n = in.nextInt();
in.nextLine(); // читаем остаток строки
String text = in.nextLine(); // теперь читаем настоящую строку
Типичные шаблоны
Подсчёт длины строки
Проверка префикса и суффикса
String s = in.nextLine();
if (s.startsWith("java")) {
System.out.println("начинается с java");
}
if (s.endsWith(".txt")) {
System.out.println("это текстовый файл");
}
Сравнение строк без учёта регистра
String answer = in.nextLine();
if (answer.equalsIgnoreCase("yes")) {
System.out.println("ДА");
} else {
System.out.println("НЕТ");
}
Что нужно запомнить
Строки в Java хранятся в типе String и записываются в двойных кавычках:
Длину строки даёт метод length(), отдельный символ – charAt(i).
Для сравнения строк по содержимому используется equals / equalsIgnoreCase, а не оператор ==.
Строки удобно склеивать оператором +, при этом числа автоматически превращаются в текст.