应先判null再用isblank():str == null || str.isblank()可安全判断null、空串或纯空白字符;jdk11+推荐此法,低版本需手动组合null判断与trim().isempty()或使用stringutils.isblank()。

直接用 String.isBlank() 最省心,但要注意它只在 Java 11+ 可用;若项目版本较低或需更细粒度控制,可组合原生方法或引入 Apache Commons Lang 的 StringUtils.isBlank()。
Java 11+ 推荐:用 String.isBlank()
这是 JDK 原生支持的语义最准确的方法:
- 返回 true 当字符串为
null?不,null.isBlank()会抛NullPointerException—— 所以必须先判空 - 正确写法是:
str != null && str.isBlank() - 它识别所有符合
Character.isWhitespace()的 Unicode 空白字符,包括空格、\t、\n、\u00A0(不间断空格)、\u3000(中文全角空格)等 - 和
trim().isEmpty()不同,它检查**全部字符**是否为空白,不只首尾
兼容低版本 JDK(如 Java 8)的原生写法
没有 isBlank() 时,稳妥组合判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
str == null || str.isEmpty() || str.trim().isEmpty()- 注意:
trim()只处理 ASCII 空白(U+0000–U+0020),对\u00A0、\u200B等无效 - 如需完整 Unicode 支持,改用:
str == null || str.isEmpty() || str.codePoints().allMatch(Character::isWhitespace)
工程已引入 commons-lang3:用 StringUtils.isBlank()
这是最安全、最简洁的生产级选择:
-
StringUtils.isBlank(str)内部已做null安全处理,无需额外判断 - 返回 true 的情况包括:
null、""、"\t \n"、"\u00A0"、"\u3000"等 - 对应反向判断用
StringUtils.isNotBlank(str)
哪些写法要避免
常见错误容易引发 NPE 或逻辑偏差:
-
str.isEmpty()——str为null时直接崩溃 -
str.trim().isEmpty()——str为null时同样 NPE -
str.equals("")——null调用报错,且不识别空白字符 -
str == ""或str.trim() == ""—— 引用比较,不可靠
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










