Строки
Строка — последовательность символов: имя, сообщение, адрес. В Java строки имеют тип String. Это не примитивный тип, а объект — значение со своими методами, которые умеют работать с текстом.
Создание строки
Строку пишут в двойных кавычках. Пустые кавычки "" дают пустую строку:
void main() {
String greeting = "Привет, Java!";
IO.println(greeting);
}Результат:
Привет, Java!Склейка строк
Оператор + склеивает строки. Если один из операндов строка, второй тоже превращается в текст:
void main() {
String name = "Олег";
int age = 30;
IO.println("Меня зовут " + name + ", мне " + age);
}Результат:
Меня зовут Олег, мне 30Будьте внимательны с числами: "Сумма: " + 2 + 3 даст Сумма: 23, потому что склейка идёт слева направо. Возьмите арифметику в скобки: "Сумма: " + (2 + 3).
Длина и символы
Метод — действие, которое умеет выполнять объект. Его вызывают через точку. Метод length() возвращает число символов, а charAt() — символ по индексу, то есть порядковому номеру с нуля:
void main() {
String word = "Java";
IO.println(word.length());
IO.println(word.charAt(0));
IO.println(word.charAt(3));
}Результат:
4
J
aПоследний символ имеет индекс length() - 1. Другие методы строк разберём в уроке о методах строк.
Специальные символы
Некоторые символы нельзя просто вписать в строку. Их записывают через обратную косую черту — это называется экранированием: \n — перевод строки, \t — табуляция, \" — кавычка, \\ — сама косая черта:
void main() {
IO.println("Первая строка\nВторая строка");
IO.println("Он сказал: \"Привет\"");
}Результат:
Первая строка
Вторая строка
Он сказал: "Привет"Строки не меняются
Строку нельзя изменить после создания. Методы вроде toUpperCase() не трогают исходную строку, а возвращают новую:
void main() {
String city = "рим";
String upper = city.toUpperCase();
IO.println(city);
IO.println(upper);
}Результат:
рим
РИМЧастая ошибка
Строки нельзя сравнивать через ==: этот оператор проверяет, один ли это объект в памяти, а не одинаковый ли в них текст. Для сравнения текста есть метод equals():
void main() {
String a = "Анна";
String b = new String("Анна");
IO.println(a == b);
IO.println(a.equals(b));
}Результат:
false
trueИногда == случайно даёт true — Java переиспользует одинаковые строки из кода. Но строки, введённые пользователем или собранные из частей, будут разными объектами, поэтому всегда пишите equals().