Вступление
В Java существует четкая разница между null
, пустыми и пустыми
строками.
- Пустая строка - это
String
с присвоенным значением, но его длина равна нулю. null
строка вообще не имеет значения.- Пустая строка содержит только пробелы , не является ни пустой, ни
null
, поскольку ей присвоено значение и ее длина0
|
|
String nullString = null;
String emptyString = "";
String blankString = " ";
В этом руководстве мы рассмотрим, как проверить, является ли String пустым, пустым или пустым в Java :
- Использование длины строки
- Использование метода String.isEmpty ()
- Использование метода String.equals ()
- Использование класса StringUtils
Использование длины строки
Как упоминалось ранее, строка пуста, если ее длина равна нулю. Мы будем
использовать метод length()
, который возвращает общее количество
символов в нашей строке.
String blankString = " ";
if(blankString == null || blankString.length() == 0)
System.out.println("This string is null or empty");
else
System.out.println("This string is neither null nor empty");
Приведенный выше код даст следующий результат:
This string is null or empty
Строка является пустой, так что , очевидно , ни null
, ни пустой.
Теперь, основываясь только на длину, мы можем на самом деле не
различать между строками , которые содержат только пробельную или любой
другой символ, поскольку пробел является Character
.
Примечание. Важно сначала null
проверку, поскольку оператор
короткого замыкания ИЛИ ||
немедленно сломается при первом true
условии. Если строка фактически имеет значение null
, все остальные
условия перед ней NullPointerException
.
Использование метода isEmpty ()
Метод isEmpty()
возвращает true
или false
зависимости от того,
содержит ли наша строка какой-либо текст. Его легко объединить в цепочку
с помощью string == null
и даже можно различать пустые и пустые
строки:
String string = "Hello there";
if (string == null || string.isEmpty() || string.trim().isEmpty())
System.out.println("String is null, empty or blank.");
else
System.out.println("String is neither null, empty nor blank");
Метод trim()
удаляет все пробелы слева и справа от String и возвращает
новую последовательность. Если строка пуста , после удаления всех
пробелов она будет пустой, поэтому isEmpty()
вернет true
.
Запуск этого фрагмента кода даст нам следующий результат:
String is neither null, empty nor blank
Использование метода equals ()
Метод equals()
сравнивает две заданные строки на основе их содержимого
и возвращает true
если они равны, или false
если нет:
String string = "Hello there";
if(string == null || string.equals("") || string.trim().equals(""))
System.out.println("String is null, empty or blank");
else
System.out.println("String is neither null, empty nor blank");
Примерно так же, как и раньше, если обрезанная строка - ""
, она либо
была пустой с самого начала, либо была пустой строкой с 0..n
:
String is neither null, empty nor blank
Использование класса StringUtils
Apache Commons - популярная библиотека
Java, обеспечивающая дополнительные функции. StringUtils
- один из
классов, которые предлагает Apache Commons. Этот класс содержит методы,
используемые для работы со Strings
, аналогичные java.lang.String
.
Если вы не знакомы с вспомогательными классами Apache Commons, мы настоятельно рекомендуем прочитать нашеРуководство по классу StringUtils .
Поскольку для этого подхода мы будем использовать Apache Commons, давайте добавим его как зависимость:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Или, если вы используете Gradle:
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
Одно из ключевых различий между StingUtils
и String
заключается в
том, что все методы из класса StringUtils
являются нулевыми . Он
дополнительно предоставляет несколько методов, которые мы можем
использовать для этого, включая StringUtils.isEmpty()
и
StringUtils.isBlank()
:
String nullString = null;
if(nullString == null) {
System.out.println("String is null");
}
else if(StringUtils.isEmpty(nullString)) {
System.out.println("String is empty");
}
else if(StringUtils.isBlank(nullString)) {
System.out.println("String is blank");
}
Результатом будет:
String is null
В дополнение к ним также существуют их обратные
StringUtils.isNotEmpty()
и StringUtils.isNotBlank()
, однако вы
можете достичь той же функциональности, используя !
):
if(StringUtils.isNotEmpty(""))
System.out.println("String is not empty");
// Equivalent to
if(!StringUtils.isEmpty(""))
System.out.println("String is not empty");
Заключение
Строка - это объект, представляющий последовательность символов. Java
предоставляет множество различных методов для обработки строк. В этой
статье мы использовали некоторые из этих методов, такие как isEmpty()
, equals()
, StringUtils.isEmpty()
и length()
чтобы проверить,
является ли String
null
, пустым или пустым.