推荐使用 StringUtils.isBlank() 判断字符串是否为空或只含空白字符;若无第三方库,可用 s == null || s.isEmpty() || s.trim().isEmpty(),但 trim() 不支持 Unicode 空白;需全面支持时用 codePoints().allMatch(Character::isWhitespace)。

在 Java 中判断字符串是否为空或只包含空白字符,最常用且推荐的方式是使用 Apache Commons Lang 库中的 StringUtils.isBlank() 方法。它能同时覆盖 null、空字符串("")和纯空白字符(如 "\t\n ")三种情况。
使用 StringUtils.isBlank()(推荐)
这是最简洁、安全、语义清晰的做法:
- 自动处理
null值,不会抛出NullPointerException - 对空字符串
""返回true - 对仅含空白字符(空格、制表符、换行符等 Unicode 空白)的字符串也返回
true
示例:
import org.apache.commons.lang3.StringUtils;String s = " \t\n";
if (StringUtils.isBlank(s)) {
System.out.println("字符串为空或只含空白");
}
不依赖第三方库的原生写法
如果不能引入外部依赖,可用 JDK 自带方法组合判断:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 先用
s == null检查空引用 - 再用
s.isEmpty()判断是否为空字符串 - 最后用
s.trim().isEmpty()判断是否只含空白(注意:trim()只处理 ASCII 空白,对某些 Unicode 空白如 (U+00A0)无效)
封装成工具方法更实用:
public static boolean isBlank(String s) {return s == null || s.isEmpty() || s.trim().isEmpty();
}
注意 trim() 的局限性
String.trim() 只移除开头和结尾的 ASCII 空白(U+0000–U+0020),不处理其他 Unicode 空白字符,例如:
- 不间断空格( ,U+00A0)
- 零宽空格(U+200B)
- 段落分隔符(U+2029)
若需全面支持 Unicode 空白,可改用 codePoints().allMatch(Character::isWhitespace)(Java 8+):
if (s == null) return true;
return s.codePoints().allMatch(Character::isWhitespace);
}
避免常见错误写法
以下方式不推荐:
-
s.equals(""):未判空,s为null时抛异常 -
s.length() == 0:同样未处理null -
s.trim().length() == 0:虽比前两个好,但仍受trim()的 Unicode 限制,且未显式处理null
不复杂但容易忽略细节,选对方法能少踩坑。

















