isempty判断字符串长度是否为0,仅对""返回true;isblank(jdk 11+)判断是否为空或全为unicode空白字符,对""、" "、"\t\n"等均返回true,二者调用前均需判null防npe。

isEmpty 判断字符串是否长度为 0(即 ""),isBlank 判断字符串是否“视觉上不可见”——包括空串、纯空白字符(如空格、制表符、换行符等)。
isEmpty:只看长度,不看内容
这是 String 类自带的实例方法(JDK 15+),判断字符串是否 length() == 0。它对空白字符完全不敏感。
"", " ".isEmpty() → true, false-
"\t\n".isEmpty() → false(长度是 2,不是空) - 注意:调用前必须确保字符串非 null,否则抛
NullPointerException
isBlank:语义更贴近“真正没内容”
也是 String 自带的实例方法(JDK 11+),内部逻辑等价于 chars().allMatch(Character::isWhitespace),即所有字符都是 Unicode 空白字符(含空格、\t、\n、\r、\u00A0 等)或字符串为空。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
"", " ", "\t\n\r".isBlank() → true, true, true-
" a ".isBlank() → false(含非空白字符) - 同样要求对象非 null;null 字符串需先判空再调用
安全写法:避免 NPE 的常见模式
生产代码中,字符串可能为 null,直接调用会出错。推荐组合使用:
- 判空字符串:
str == null || str.isEmpty() - 判空白串(含 null):
str == null || str.isBlank() - 若用 Apache Commons Lang:
StringUtils.isEmpty(str)(兼容 null)或StringUtils.isBlank(str)(也兼容 null)
选哪个?看业务意图
如果逻辑关注“有没有输入”,比如表单校验用户是否填写了姓名字段,isBlank 更合理——用户只敲空格不该算有效输入。
如果逻辑严格区分“未提供”和“提供了空白”,比如解析协议字段时 "" 和 " " 含义不同,则需分别处理,此时 isEmpty + trim().isEmpty() 或正则更可控。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










