最安全的判空方式是str == null || str.isempty(),因null调用isempty()会抛npe;推荐用此写法或objects.isnull(str) || str.isempty()、stringutils.isempty(str),注意区分isempty()与isblank()。

直接用 str == null || str.isEmpty() 最安全,这是防止空指针异常(NPE)的首选方式。
为什么不能只用 str.isEmpty()
因为 String 是不可变对象,但变量本身可以为 null。调用 null.isEmpty() 会立即抛出 NullPointerException。Java 不会在方法调用前自动判空,必须由开发者显式处理。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
推荐的判空写法(兼顾安全与简洁)
-
基础可靠写法:
str == null || str.isEmpty()—— 明确、高效、无依赖 -
使用
Objects.isNull():Objects.isNull(str) || str.isEmpty()—— 语义更清晰,适合强调判空意图 -
使用 Apache Commons Lang:
StringUtils.isEmpty(str)—— 内部已处理null,还兼容空白字符串(如"\t\n "),需引入依赖
注意区分 isEmpty() 和 isBlank()
str.isEmpty() 只判断长度是否为 0,对 " "(含空格)返回 false;StringUtils.isBlank(str) 会进一步 trim 并判断,更适合业务中“真正无内容”的场景。若需忽略空白,别只用 isEmpty()。
避免这些常见错误写法
-
str.isEmpty() || str == null—— 顺序错误,先调用方法仍会 NPE -
str.equals("")——null.equals("")同样抛异常 -
"".equals(str)—— 虽可防 NPE,但语义绕、可读性差,且无法区分null和空串(如果业务需要区分)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










