Как проверить, является ли строка пустой (состоящей только из пробелов) в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, является ли строка пустой (состоящей только из пробелов) на Java. Вы познакомитесь с методом isBlank(), введенным в Java 11, который эффективно определяет, является ли строка пустой или содержит только пробельные символы.

С помощью практических примеров вы сначала используете метод isBlank() для проверки различных типов строк. Затем вы научитесь комбинировать метод isBlank() с проверкой на null для надежной валидации строк. Наконец, вы сравните поведение методов isBlank() и isEmpty() для понимания их ключевых отличий.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/if_else -.-> lab-559985{{"Как проверить, является ли строка пустой (состоящей только из пробелов) в Java"}} java/strings -.-> lab-559985{{"Как проверить, является ли строка пустой (состоящей только из пробелов) в Java"}} java/string_methods -.-> lab-559985{{"Как проверить, является ли строка пустой (состоящей только из пробелов) в Java"}} end

Использование метода isBlank() для проверки строки на пустоту (состояние "blank")

На этом этапе вы научитесь использовать метод isBlank() в Java для проверки, является ли строка пустой (состоящей только из пробелов). Пустая строка (blank string) - это строка, которая содержит только пробельные символы (пробелы, табуляции, переводы строки) или является пустой.

Метод isBlank() был введен в Java 11 и представляет собой удобный способ проверки строк на пустоту. Он возвращает true, если строка пуста или содержит только пробельные символы, и false в противном случае.

Создадим простую Java - программу, чтобы продемонстрировать использование метода isBlank().

  1. Откройте файл HelloJava.java в редакторе WebIDE, если он еще не открыт.

  2. Замените все содержимое файла следующим кодом:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Пустая строка
            String str2 = "   "; // Строка, содержащая только пробелы
            String str3 = "Hello"; // Не пустая строка
            String str4 = " Hello "; // Строка с начальными и конечными пробелами
    
            System.out.println("Is str1 blank? " + str1.isBlank());
            System.out.println("Is str2 blank? " + str2.isBlank());
            System.out.println("Is str3 blank? " + str3.isBlank());
            System.out.println("Is str4 blank? " + str4.isBlank());
        }
    }

    В этом коде:

    • Мы объявляем четыре разных строки: пустую строку, строку, содержащую только пробелы, не пустую строку и строку с начальными и конечными пробелами.
    • Мы используем метод str.isBlank() для проверки, является ли каждая строка пустой, и выводим результат.
  3. Сохраните файл (Ctrl+S или Cmd+S).

  4. Теперь скомпилируем программу. Откройте терминал в нижней части WebIDE и убедитесь, что вы находитесь в директории ~/project. Если нет, используйте команду cd ~/project. Затем скомпилируйте код с помощью команды javac:

    javac HelloJava.java

    Если ошибок нет, в директории ~/project будет создан файл HelloJava.class.

  5. Наконец, запустите скомпилированную программу с помощью команды java:

    java HelloJava

    Вы должны увидеть следующий вывод:

    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? false

    Как вы можете видеть, метод isBlank() правильно определяет пустую строку (str1) и строку, содержащую только пробелы (str2), как пустые, в то время как str3 и str4 считаются не пустыми, так как они содержат не пробельные символы.

Комбинирование метода isBlank() с проверкой на null

На предыдущем этапе вы узнали, как использовать метод isBlank() для проверки строк на пустоту или наличие только пробельных символов. Однако метод isBlank() вызовет исключение NullPointerException, если переменная строки равна null. В реальных приложениях часто встречаются null - строки, поэтому важно обрабатывать их корректно.

Для безопасной проверки, является ли строка null или пустой (состоящей только из пробелов), вы должны комбинировать проверку на null с использованием метода isBlank(). Наиболее распространенный способ сделать это - использовать оператор if:

if (str == null || str.isBlank()) {
    // Строка равна null или пуста
} else {
    // Строка не равна null и не пуста
}

Давайте модифицируем нашу программу, чтобы включить null - строку и продемонстрировать, как ее обработать.

  1. Откройте файл HelloJava.java в редакторе WebIDE.

  2. Замените текущий код следующим:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Пустая строка
            String str2 = "   "; // Строка, содержащая только пробелы
            String str3 = "Hello"; // Не пустая строка
            String str4 = null; // Null - строка
    
            System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
            System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
        }
    }

    В этом обновленном коде:

    • Мы добавили переменную строки str4 со значением null.
    • Мы используем условие str == null || str.isBlank() для проверки, является ли каждая строка null или пустой. Оператор || означает "или". Если первая часть (str == null) истинна, вторая часть (str.isBlank()) даже не проверяется, что предотвращает возникновение NullPointerException.
  3. Сохраните файл (Ctrl+S или Cmd+S).

  4. Скомпилируйте модифицированную программу в терминале:

    javac HelloJava.java
  5. Запустите скомпилированную программу:

    java HelloJava

    Вы должны увидеть следующий вывод:

    Is str1 null or blank? true
    Is str2 null or blank? true
    Is str3 null or blank? false
    Is str4 null or blank? true

    Этот вывод показывает, что наша комбинированная проверка правильно идентифицирует пустую строку, строку с пробелами и null - строку как "равные null или пустые", в то время как не пустая строка правильно идентифицируется как "не равная null и не пустая".

Комбинирование проверки на null с методом isBlank() - это надежный способ обработки различных состояний строк в ваших Java - программах.

Сравнение методов isBlank() и isEmpty()

На предыдущих этапах вы использовали метод isBlank() для проверки строк на пустоту или наличие только пробельных символов. Возможно, вы также слышали о методе isEmpty() в Java. На этом этапе мы сравним методы isBlank() и isEmpty(), чтобы понять разницу между ними.

Метод isEmpty() доступен в Java начиная с версии 1.0. Он возвращает true только в том случае, если длина строки равна 0 (то есть это пустая строка ""). Для любой другой строки, в том числе для строк, содержащих только пробельные символы, он возвращает false.

Давайте в последний раз модифицируем нашу программу, чтобы использовать оба метода isBlank() и isEmpty() и посмотреть, как они работают с разными типами строк.

  1. Откройте файл HelloJava.java в редакторе WebIDE.

  2. Замените текущий код следующим:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Пустая строка
            String str2 = "   "; // Строка, содержащая только пробелы
            String str3 = "Hello"; // Не пустая строка
            String str4 = null; // Null - строка
    
            System.out.println("--- Using isBlank() ---");
            System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
            // Примечание: Мы все еще нуждаемся в проверке на null перед вызовом isBlank()
            System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
    
            System.out.println("\n--- Using isEmpty() ---");
            // Примечание: Мы также нуждаемся в проверке на null перед вызовом isEmpty()
            System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
            System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
            System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
            System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
        }
    }

    В этом коде:

    • Мы добавили разделы для демонстрации работы методов isBlank() и isEmpty().
    • Мы используем комбинированную проверку на null (str == null || ...) перед вызовом как isBlank(), так и isEmpty() для предотвращения NullPointerException.
  3. Сохраните файл (Ctrl+S или Cmd+S).

  4. Скомпилируйте программу в терминале:

    javac HelloJava.java
  5. Запустите скомпилированную программу:

    java HelloJava

    Вы должны увидеть следующий вывод:

    --- Using isBlank() ---
    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? true
    
    --- Using isEmpty() ---
    Is str1 empty? true
    Is str2 empty? false
    Is str3 empty? false
    Is str4 empty? true

    Из вывода можно заметить ключевое различие:

    • Метод isBlank() возвращает true как для пустых строк (""), так и для строк, содержащих только пробельные символы (" ").
    • Метод isEmpty() возвращает true только для пустых строк (""). Для строк, содержащих только пробельные символы (" "), он возвращает false.

    Оба метода требуют проверки на null перед вызовом на потенциально null - строке.

В резюме:

  • Используйте метод isEmpty(), если вы хотите проверить, имеет ли строка нулевую длину.
  • Используйте метод isBlank(), если вы хотите проверить, является ли строка пустой или содержит только пробельные символы.

Понимание разницы между этими двумя методами является важным для написания корректного и надежного кода для обработки строк в Java.

Резюме

В этом практическом занятии (лабораторной работе) вы узнали, как проверить, является ли строка пустой (состоящей только из пробелов) в Java с использованием метода isBlank(), который был введен в Java 11. Вы практиковались в использовании метода isBlank() на различных типах строк, включая пустые строки, строки, состоящие только из пробелов, и строки с содержимым. Вы также скомпилировали и запустили простую Java - программу, чтобы продемонстрировать функциональность метода isBlank().