Глава 5. Методы и функции ← Вернуться к списку глав Глава 7. Массивы и коллекции

Глава 6. Работа со строками

Ниже представлена подробная шестая глава, ориентированная на абсолютных новичков. В предыдущих главах мы научились выводить текст на экран, работать с переменными, условиями и циклами, а также разбивать код на методы. Теперь пришло время научиться более эффективно работать со строками.

Строки (String) — это последовательность символов. Любой текст, который вы видите — это строка: "Привет", "Hello World!", "12345" и даже пустая строка "".


6.1 Что такое строка в Java?

В Java строки представлены объектами класса String. Когда вы пишете:

String greeting = "Hello World!";

Вы создаёте объект типа String. В отличие от переменных примитивных типов (например, int), строки — это ссылочный тип. Но пока можно не углубляться в детали: главное — вы можете использовать методы класса String, чтобы получать от строк всю нужную информацию.

6.2 Основные свойства строк

6.3 Создание строк

Есть несколько способов создать строку:

String text1 = "Привет"; // самый простой способ
String text2 = new String("Привет"); // редко используемый, но возможный

В большинстве случаев предпочтителен первый способ.

6.4 Длина строки и доступ к символам

Чтобы узнать длину строки, используйте метод 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.

6.5 Выделение подстроки

Метод 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!

6.6 Преобразование регистра

Чтобы преобразовать строку в верхний или нижний регистр:

String greeting = "Hello World!";
System.out.println(greeting.toUpperCase()); 
// Выведет: HELLO WORLD!

System.out.println(greeting.toLowerCase()); 
// Выведет: hello world!

6.7 Сравнение строк

При сравнении строк нельзя использовать оператор == для проверки на равенство содержимого. == для строк проверяет, ссылаются ли переменные на один и тот же объект, а нам обычно нужно сравнить именно содержимое.

Для этого используйте метод 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

6.8 Поиск в строке

Метод indexOf() поможет найти, где внутри строки находится определённый символ или подстрока:

String phrase = "Java is cool";
int index = phrase.indexOf("cool");
System.out.println("Слово 'cool' начинается с индекса: " + index); 
// Выведет: Слово 'cool' начинается с индекса: 8

Если подстрока не найдена, indexOf() вернёт -1.

6.9 Замена символов и подстрок

Метод replace() заменяет символы или подстроки на другие:

String phrase = "I love Java!";
String newPhrase = phrase.replace("Java", "programming");
System.out.println(newPhrase); 
// Выведет: I love programming!

Обратите внимание, что исходная строка phrase не изменилась. Строки неизменяемы, поэтому replace() вернул новую строку newPhrase.

6.10 Проверка начала и конца строки

String greeting = "Hello World!";
System.out.println(greeting.startsWith("Hello")); // true
System.out.println(greeting.endsWith("World!")); // true

6.11 Пустые строки

String empty = "";
System.out.println(empty.isEmpty()); // true

6.12 Пример: анализ пользовательского ввода

Допустим, вы хотите спросить у пользователя имя, а потом поздороваться, выведя имя в верхнем регистре:

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(), который удаляет пробелы в начале и в конце строки.

6.13 Подводим итоги

В этой главе мы:

Теперь вы можете обрабатывать текстовые данные более уверенно. Это пригодится вам в будущих программах: анализировать ввод пользователя, проверять правильность паролей, искать нужную информацию в текстах и многое другое.


На этом мы завершаем шестую главу. В следующей главе мы перейдём к массивам и коллекциям — способам хранить и обрабатывать сразу много элементов данных (чисел, строк и т.д.). Это позволит вам создавать программы, работающие с целыми наборами значений.

Глава 5. Методы и функции ← Вернуться к списку глав Глава 7. Массивы и коллекции

Просмотров: 52