应先判null再用isBlank():str == null || str.isBlank()可安全判断null、空串或纯空白字符;JDK11+推荐此法,低版本需手动组合null判断与trim().isEmpty()或使用StringUtils.isBlank()。

判断 Java 中 String 是否为空串或空白字符,关键在于区分三种情况:null、空字符串("")、仅含空白字符(如空格、制表符、换行符等)。处理不当容易触发 NullPointerException,所以必须先判 null 再操作。
用 String 自带方法(推荐 Java 11+)
Java 11 引入了 isBlank() 方法,一步到位判断 null、空串、纯空白字符:
-
str == null || str.isBlank()→ true 表示“无效字符串”(空或空白) -
str != null && !str.isBlank()→ true 表示“有效非空白字符串” - 注意:
isBlank()内部会调用trim().isEmpty(),但更高效且语义清晰
兼容低版本 JDK(Java 6–10)
若项目还在用 Java 8 或 9,isBlank() 不可用,需手动组合:
- 判空串(不含空白):
str == null || str.length() == 0或str == null || str.isEmpty() - 判空白串(含空格、\t、\n 等):
str == null || str.trim().isEmpty() - 注意:
trim()不修改原字符串,只返回新字符串;对 null 调用会 NPE,所以必须前置 null 判断
用 Apache Commons Lang(项目已引入时)
如果工程依赖了 commons-lang3,直接用 StringUtils 更简洁安全:
立即学习“Java免费学习笔记(深入)”;
-
StringUtils.isEmpty(str)→ true 当 str 为 null 或 ""(不含空白) -
StringUtils.isBlank(str)→ true 当 str 为 null、"" 或纯空白(含 \t、\n、\r、\f、空格等) - 这两个方法内部已做 null 安全处理,无需额外判空
避免常见错误写法
以下写法有风险或逻辑偏差,应避免:
-
str.isEmpty()—— 若 str 为 null,直接抛 NPE -
str.equals("")—— null 调用会 NPE;即使不 null,也不识别空白字符 -
str == ""—— 比较的是引用,不可靠(除非字符串字面量且未被 intern) -
str.trim() == ""—— 同样是引用比较,且 trim() 返回新对象,永远不等于字面量 ""


















