java判断字符串为空需区分null、""和纯空白字符,推荐用stringutils.isblank()或jdk11+的string.isblank(),手动判空应先检查null再trim().isempty()。

Java 中判断字符串参数是否为空,核心是区分 null、空字符串("")和仅含空白字符(如空格、制表符)的字符串。直接用 str.equals("") 或 str.length() == 0 会触发空指针异常(NPE),所以必须先判 null,再处理内容。
推荐:使用 Apache Commons Lang 的 StringUtils
这是最稳妥、简洁且被广泛验证的方式。引入依赖后,一行代码即可覆盖所有常见空值情况:
-
StringUtils.isEmpty(str):判断null或长度为 0(即"") -
StringUtils.isBlank(str):判断null、""或只含空白字符(如"\t\n ")
示例:
if (StringUtils.isBlank(input)) {
throw new IllegalArgumentException("输入不能为空");
}
不依赖第三方时:手动安全判空
若项目不允许引入额外依赖,需自己写防御性逻辑,顺序不能错:
- 先用
== null判断是否为null - 再用
.isEmpty()(JDK 1.6+)或.length() == 0判断是否为空字符串 - 若需忽略空白,再调用
.trim().isEmpty()
推荐写法(兼顾可读与安全):
if (input == null || input.trim().isEmpty()) {
// 视为“空”
}
注意:input.trim().isEmpty() 在 input 为 null 时会 NPE,所以 == null 必须放前面,利用短路与(||)保证不执行后续调用。
避免踩坑的常见错误
-
input.equals("")—— 输入为null时直接抛NullPointerException -
input.length() == 0—— 同样对null不安全 -
"".equals(input)—— 虽可防 NPE,但无法识别空白字符串,且语义不如isBlank清晰 - 仅用
input != null—— 漏掉""和纯空白,业务上通常不算有效输入
JDK 11+ 可选:使用 String.isBlank()
如果项目使用 JDK 11 或更高版本,可直接用内置方法:
if (input == null || input.isBlank()) {
// 处理空值
}
String::isBlank 等价于 StringUtils.isBlank,语义明确、无需依赖,推荐新项目优先采用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











