推荐使用 string.isblank() 判断空或纯空白,它支持 unicode 空白(含全角空格),但需 jdk 11+ 且不处理 null;null 安全写法为 str == null || str.isblank(),旧版可用 str.chars().allmatch(character::iswhitespace) 或 apache commons stringutils.isblank()。

Java 中高效判断一个 String 是否为空或仅含空白字符,推荐直接使用 String.isBlank() 方法——它专为此类语义判断而生,一行代码即可覆盖 ""、" "、"\t\n" 甚至全角空格 "\u3000" 等 Unicode 空白情况。
isBlank() 是 Java 11 正式引入的
该方法于 2018 年发布的 JDK 11 中首次加入标准库(JEP 285),此前版本(如 JDK 8)不支持。调用 null.isBlank() 会抛出 NullPointerException,因此必须自行处理 null:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
错误写法:
str.isBlank()(str 为 null 时直接崩溃) -
正确写法:
str == null || str.isBlank() - 更简洁替代(JDK 9+):
Objects.toString(str, "").isBlank()
对比 isEmpty():别用错场景
isEmpty() 仅检查长度是否为 0,不识别任何空白字符:
-
" ".isEmpty()→ false(有 1 个空格,长度非零) -
" ".isBlank()→ true(全为空白) - 二者对
""都返回 true
旧版本(如 JDK 8)怎么替代?
若无法升级 JDK,避免手写 trim().isEmpty()(性能差、不支持全角空格、创建新字符串):
- 推荐手动实现(Java 8+):
str == null || str.length() == 0 || str.chars().allMatch(Character::isWhitespace) - 或引入 Apache Commons Lang:
StringUtils.isBlank(str)(内置 null 安全,语义等价)
注意两个易忽略点
-
isBlank()不识别零宽字符(如\u200B),它们不属于Character.isWhitespace()范围 - Android 平台需 API 26+(Android 8.0)才可用,低版本需降级处理
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










