java字符串空值校验应先判null再判empty,推荐objects.tostring(str,"").isempty()或str==null||str.isempty(),需用短路或;扩展空白字符校验用trim().isempty();高频场景可封装isblank()或用apache commons stringutils.isblank();框架中优先使用@notblank等注解。

Java 中对字符串变量同时校验 null 和空串(""),核心是避免 NullPointerException,并统一处理“无效字符串”场景。最稳妥的方式是优先用 Objects.isNull() 或直接判 == null,再结合 .isEmpty(),但顺序不能错——必须先判 null 再调方法。
推荐写法:用 Objects.toString() + isEmpty
借助 java.util.Objects 工具类可一步规避空指针:
-
Objects.toString(str, "").isEmpty()—— 把null转成空串再判空,安全简洁 - 等价于:
str == null ? true : str.isEmpty(),但更语义清晰、不易出错 - 适合校验逻辑集中、不想写 if 嵌套的场景,比如参数校验、配置读取
常用组合:先判 null 再判 empty
显式分步判断,逻辑透明,兼容所有 JDK 版本:
-
if (str == null || str.isEmpty())—— 注意用||(短路或),null 时不会执行isEmpty() - 不要写成
str.isEmpty() || str == null,否则 null 会抛异常 - 若还需排除纯空白(如 " "),可接
str.trim().isEmpty(),但注意 trim 本身不防 null,得放在 null 判定之后
工具类封装:提升复用性
项目中高频使用时,建议封装成静态方法:
public static boolean isBlank(String str) { return str == null || str.trim().isEmpty(); }- Apache Commons Lang 的
StringUtils.isBlank()就是这个逻辑,可直接引入依赖使用 - 自定义时注意命名明确(如
isBlank区别于isEmpty),避免团队理解偏差
Spring/框架场景:用注解更省心
在 Web 层或 Bean 校验中,优先交给框架处理:
-
@NotBlank(Hibernate Validator)自动检查 null、empty、blank,适用于 DTO 字段 -
@NotNull只防 null,不防空串;@NotEmpty防 null 和 empty,但不防 blank - Controller 方法参数加注解后,配合
@Valid即可触发校验,无需手写 if
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











