Обязательно используйте части && в этом порядке, потому что java не продолжит вычислять вторую часть, если первая часть && завершится неудачей, таким образом гарантируя, что вы не получите исключение с нулевым указателем из str.isEmpty() if str is null .
Будьте осторожны, это доступно только начиная с Java SE 1.6. Вы должны проверить str.length() == 0 в предыдущих версиях.
Также игнорировать пробелы:
if(str != null && !str.trim().isEmpty())
(поскольку Java 11 str.trim().isEmpty() может быть сокращен до str.isBlank(), который также будет проверять наличие других пробелов в Юникоде)
Заключена в удобную функцию:
publicstaticbooleanempty( final String s ) { // Null-safe, short-circuit evaluation. returns== null || s.trim().isEmpty(); }
Мне нравится использовать Apache commons-lang для такого рода задач, и особенно служебный класс StringUtils:
import org.apache.commons.lang.StringUtils;
if (StringUtils.isNotBlank(str)) { ... }
if (StringUtils.isBlank(str)) { ... }
Ответ 3
Просто добавляю сюда Android:
import android.text.TextUtils;
if (!TextUtils.isEmpty(str)) { ... }
Ответ 4
Чтобы добавить к @BJorn и @SeanPatrickFloyd Способ Guava для этого:
Strings.nullToEmpty(str).isEmpty(); // or Strings.isNullOrEmpty(str);
Язык Commons иногда более удобочитаем, но я постепенно все больше полагаюсь на Guava, плюс иногда язык Commons сбивает с толку, когда дело доходит до isBlank() (например, что такое пробел или нет).
Версия языка Commons Lang от Guava isBlank будет:
Strings.nullToEmpty(str).trim().isEmpty()
Я скажу, что код, который не разрешает "" (пустой) Иnull является подозрительным и потенциально глючным в том смысле, что он, вероятно, не обрабатывает все случаи, когда недопустимость null имеет смысл (хотя для SQL я могу понять, поскольку SQL / HQL странный '').