字符串校验中isBlank、isEmpty、isNull怎么用?
StringUtils.isEmpty()
判断:
str == null
- 或者
str.length() == 0
也就是说,只要是 null
或 ""
(空字符串),就返回 true
。
值 | isEmpty 返回 |
---|---|
null | ✅ true |
"" | ✅ true |
" " | ❌ false |
"abc" | ❌ false |
StringUtils.isBlank()
判断:
str == null
- 或者
str.trim().length() == 0
也就是说,它比 isEmpty()
更宽松,连只包含空格、制表符、换行符也会返回 true
。
值 | isBlank 返回 |
---|---|
null | ✅ true |
"" | ✅ true |
" " | ✅ true |
"abc" | ❌ false |
适合你在表单校验/参数判空时直接用。
StringUtils.isNull() 或 str == null
这不是工具方法,而是最原始的判空写法,用来判断变量是否为 null
。
它只能判断是否为 null,连 ""
都不会算空。
值 | str == null 返回 |
---|---|
null | ✅ true |
"" | ❌ false |
" " | ❌ false |
🚩 总结对比
方法/写法 | 判 null | 判空串("") | 判空白符(" ") |
---|---|---|---|
str == null | ✅ | ❌ | ❌ |
isEmpty() | ✅ | ✅ | ❌ |
isBlank() | ✅ | ✅ | ✅ |
业务场景中如何选用最合适的判断方式呢?其核心就是:判断 null 是不是够,还是要连空串、空格都算上。不同的业务需求下,我们要明确界定“空”的边界——
- 有时只要是
null
就算“空”; - 有时
""
也不行; - 有时
" "
也得视为无效。
所以核心判断是:
❓ 你需要判断的字段,是不是“必须有实质内容”?还是说只要不是
null
就可以?
⚠️ 哪个该用?(分业务场景)
业务场景 | 推荐方式 | 理由 |
---|---|---|
数据库主键、ID 等系统字段校验 | str == null | 只判断是否赋值,空字符串可能是合法的 |
表单字段/用户输入内容校验 | StringUtils.isBlank(str) | " " 不应该通过,必须有实质内容 |
JSON字段、可选参数等校验 | StringUtils.isEmpty(str) | 只要不是 null 或 "" 就行,空格也允许 |
✍️ 总结一句话
判断 null 是不是够?还是连空串、空格都要一起判?选
== null
/isEmpty
/isBlank
就看这点。
如果不确定,建议一律用:
java
StringUtils.isBlank(str)
这样最严,最安全,尤其是用户输入类场景。