Skip to content

字符串校验中isBlank、isEmpty、isNull怎么用?

StringUtils.isEmpty()

判断:

  • str == null
  • 或者 str.length() == 0

也就是说,只要是 null""(空字符串),就返回 true

isEmpty 返回
nulltrue
""true
" "false
"abc"false

StringUtils.isBlank()

判断:

  • str == null
  • 或者 str.trim().length() == 0

也就是说,它比 isEmpty()宽松,连只包含空格、制表符、换行符也会返回 true

isBlank 返回
nulltrue
""true
" "true
"abc"false

适合你在表单校验/参数判空时直接用。

StringUtils.isNull() 或 str == null

这不是工具方法,而是最原始的判空写法,用来判断变量是否为 null

只能判断是否为 null,连 "" 都不会算空。

str == null 返回
nulltrue
""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)

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

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