Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, является ли строка пустой (состоящей только из пробелов) на Java. Вы познакомитесь с методом isBlank(), введенным в Java 11, который эффективно определяет, является ли строка пустой или содержит только пробельные символы.
С помощью практических примеров вы сначала используете метод isBlank() для проверки различных типов строк. Затем вы научитесь комбинировать метод isBlank() с проверкой на null для надежной валидации строк. Наконец, вы сравните поведение методов isBlank() и isEmpty() для понимания их ключевых отличий.
Использование метода isBlank() для проверки на пустую (состоящую только из пробелов) строку
На этом этапе вы научитесь использовать метод isBlank() в Java для проверки, является ли строка пустой (состоящей только из пробелов). Пустая строка (blank string) - это строка, которая содержит только пробельные символы (пробелы, табуляции, переводы строки) или является пустой.
Метод isBlank() был введен в Java 11 и представляет собой удобный способ проверки строк на пустоту. Он возвращает true, если строка пуста или содержит только пробельные символы, и false в противном случае.
Создадим простую Java - программу, чтобы продемонстрировать использование метода isBlank().
Откройте файл
HelloJava.javaв редакторе WebIDE, если он еще не открыт.Замените все содержимое файла следующим кодом:
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()для проверки, является ли каждая строка пустой, и выводим результат.
Сохраните файл (Ctrl+S или Cmd+S).
Теперь скомпилируем программу. Откройте терминал в нижней части WebIDE и убедитесь, что вы находитесь в директории
~/project. Если нет, используйте командуcd ~/project. Затем скомпилируйте код с помощью командыjavac:javac HelloJava.javaЕсли ошибок нет, в директории
~/projectбудет создан файлHelloJava.class.Наконец, запустите скомпилированную программу с помощью команды
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 - строку и продемонстрировать, как ее обработать.
Откройте файл
HelloJava.javaв редакторе WebIDE.Замените текущий код следующим:
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.
- Мы добавили переменную строки
Сохраните файл (Ctrl+S или Cmd+S).
Скомпилируйте модифицированную программу в терминале:
javac HelloJava.javaЗапустите скомпилированную программу:
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() и посмотреть, как они работают с разными типами строк.
Откройте файл
HelloJava.javaв редакторе WebIDE.Замените текущий код следующим:
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.
- Мы добавили разделы для демонстрации работы методов
Сохраните файл (Ctrl+S или Cmd+S).
Скомпилируйте программу в терминале:
javac HelloJava.javaЗапустите скомпилированную программу:
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().



