字符串校验中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)这样最严,最安全,尤其是用户输入类场景。
