isempty()仅判断长度为0,isblank()(java 11+)判断去除首尾空白后长度为0;前者不处理空格、制表符等,后者支持unicode空白且语义更“空”;均不支持null,需手动判空。

String.isEmpty() 只检查字符串长度是否为 0,而 String.isBlank()(Java 11+)进一步判断是否“视觉上为空”——即去掉首尾空白后长度也为 0。
isEmpty():纯长度判断
它不处理任何字符,只看 str.length() == 0:
-
"".isEmpty()→true -
"abc".isEmpty()→false -
" ".isEmpty()→false(含空格,长度是 3) -
"\t\n".isEmpty()→false(制表符和换行符也算字符)
isBlank():语义级“空”判断
它先调用 trim(),再判断剩余部分是否为空。等价于 str.trim().length() == 0(但更高效,且支持 Unicode 空白):
-
"".isBlank()→true -
" ".isBlank()→true -
"\u2000".isBlank()→true(Unicode 四分之一空格也被识别) -
" a ".isBlank()→false(中间有非空白字符)
选哪个?看业务意图
若需严格区分“未输入”和“输了一堆空格”,用 isBlank() 更合理;若逻辑上只有空字符串才合法(比如某些协议字段不允许空白),则 isEmpty() 更精准:
- 表单提交校验用户名:建议用
!name.isBlank()(过滤掉纯空格提交) - 解析固定长度协议字段:可能要求
field.isEmpty()才代表字段缺失 - Java 8 项目无法用
isBlank()?可用StringUtils.isBlank()(Apache Commons Lang)或手动实现str == null || str.trim().isEmpty()
注意 null 安全
两者都不处理 null,直接调用会抛 NullPointerException:
- 错误写法:
str.isEmpty()(当str可能为null) - 安全写法:
str != null && str.isEmpty()或Objects.toString(str, "").isBlank()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











