Ниже представлена подробная шестая глава, ориентированная на абсолютных новичков. В предыдущих главах мы научились выводить текст на экран, работать с переменными, условиями и циклами, а также разбивать код на методы. Теперь пришло время научиться более эффективно работать со строками.
Строки (String) — это последовательность символов. Любой текст, который вы видите — это строка: "Привет", "Hello World!", "12345" и даже пустая строка "".
В Java строки представлены объектами класса String
. Когда вы пишете:
String greeting = "Hello World!";
Вы создаёте объект типа String
. В отличие от переменных примитивных типов (например, int
), строки — это ссылочный тип. Но пока можно не углубляться в детали: главное — вы можете использовать методы класса String
, чтобы получать от строк всю нужную информацию.
"Hello"
, то вы не можете изменить один из её символов, превратив её в "Hallo"
путём прямого доступа к символам. Вместо этого вы создаёте новые строки.String
.Есть несколько способов создать строку:
String text1 = "Привет"; // самый простой способ
String text2 = new String("Привет"); // редко используемый, но возможный
В большинстве случаев предпочтителен первый способ.
Чтобы узнать длину строки, используйте метод length()
:
String greeting = "Hello World!";
int length = greeting.length();
System.out.println("Длина строки: " + length);
// Выведет: Длина строки: 12
Символы в строке индексируются, начиная с 0. Чтобы получить символ по индексу, используйте charAt()
:
char firstChar = greeting.charAt(0);
System.out.println("Первый символ: " + firstChar);
// Выведет: Первый символ: H
Если вы попытаетесь обратиться к несуществующему индексу, например greeting.charAt(100)
, будет ошибка StringIndexOutOfBoundsException
.
Метод substring()
позволяет получить подстроку (часть строки):
String greeting = "Hello World!";
String sub = greeting.substring(0, 5);
System.out.println(sub);
// Выведет: Hello
Здесь substring(0, 5)
означает: возьми символы с индекса 0 включительно до индекса 5 не включительно.
Если указать только один аргумент, например substring(6)
, то вернётся подстрока с символа индекс 6 и до конца строки. Например:
String world = greeting.substring(6);
System.out.println(world);
// Выведет: World!
Чтобы преобразовать строку в верхний или нижний регистр:
String greeting = "Hello World!";
System.out.println(greeting.toUpperCase());
// Выведет: HELLO WORLD!
System.out.println(greeting.toLowerCase());
// Выведет: hello world!
При сравнении строк нельзя использовать оператор ==
для проверки на равенство содержимого. ==
для строк проверяет, ссылаются ли переменные на один и тот же объект, а нам обычно нужно сравнить именно содержимое.
Для этого используйте метод equals()
:
String s1 = "Привет";
String s2 = "Привет";
String s3 = "Здравствуйте";
System.out.println(s1.equals(s2)); // true, строки одинаковы
System.out.println(s1.equals(s3)); // false, строки разные
Если нужно сравнить строки без учёта регистра (например, "Привет" и "ПРИВЕТ"), используйте equalsIgnoreCase()
:
System.out.println("Привет".equalsIgnoreCase("ПРИВЕТ")); // true
Метод indexOf()
поможет найти, где внутри строки находится определённый символ или подстрока:
String phrase = "Java is cool";
int index = phrase.indexOf("cool");
System.out.println("Слово 'cool' начинается с индекса: " + index);
// Выведет: Слово 'cool' начинается с индекса: 8
Если подстрока не найдена, indexOf()
вернёт -1.
Метод replace()
заменяет символы или подстроки на другие:
String phrase = "I love Java!";
String newPhrase = phrase.replace("Java", "programming");
System.out.println(newPhrase);
// Выведет: I love programming!
Обратите внимание, что исходная строка phrase
не изменилась. Строки неизменяемы, поэтому replace()
вернул новую строку newPhrase
.
startsWith("Hello")
проверяет, начинается ли строка с "Hello"endsWith("!")
проверяет, заканчивается ли строка на "!".String greeting = "Hello World!";
System.out.println(greeting.startsWith("Hello")); // true
System.out.println(greeting.endsWith("World!")); // true
String empty = "";
isEmpty()
:String empty = "";
System.out.println(empty.isEmpty()); // true
Допустим, вы хотите спросить у пользователя имя, а потом поздороваться, выведя имя в верхнем регистре:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите имя: ");
String name = scanner.nextLine();
// Обрежем пробелы в начале и конце
name = name.trim();
// Если строка пустая, сообщим об этом
if (name.isEmpty()) {
System.out.println("Вы ничего не ввели!");
} else {
System.out.println("Привет, " + name.toUpperCase() + "!");
}
}
}
Обратите внимание на метод trim()
, который удаляет пробелы в начале и в конце строки.
В этой главе мы:
String
.length()
), получать символы (charAt()
), выделять подстроки (substring()
).toUpperCase()
, toLowerCase()
).equals()
, equalsIgnoreCase()
).indexOf()
, replace()
, startsWith()
, endsWith()
, isEmpty()
и trim()
.Теперь вы можете обрабатывать текстовые данные более уверенно. Это пригодится вам в будущих программах: анализировать ввод пользователя, проверять правильность паролей, искать нужную информацию в текстах и многое другое.
На этом мы завершаем шестую главу. В следующей главе мы перейдём к массивам и коллекциям — способам хранить и обрабатывать сразу много элементов данных (чисел, строк и т.д.). Это позволит вам создавать программы, работающие с целыми наборами значений.
Просмотров: 52