Skip to content

字符串校验中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)

这样最严,最安全,尤其是用户输入类场景。

评论

所有文章版权皆归博主所有,仅供学习参考。