java高效逻辑判断的关键是利用&&和||短路特性:轻量高确定性检查放左,耗时易错操作置右;非空/常量比较优先;&&选大概率假,||选大概率真;善用括号明确优先级,提取语义变量或封装方法提升可读性与可维护性。

Java 中高效逻辑判断的关键不是堆砌运算符,而是让 && 和 || 的短路特性真正发挥作用——把轻量、高确定性的检查放左边,把耗时、易出错或有副作用的操作留右边。
按执行成本和失败概率排条件顺序
左侧表达式一定执行,右侧可能被跳过。因此:
- 非空检查(
obj != null)、常量比较(status == ACTIVE)这类零开销判断,必须放在最左 - 对 &&:优先放“大概率不满足”的条件(如
user.isSuspended() == false),一假即停 - 对 ||:优先放“大概率满足”的条件(如
cacheHit()),一真即返 - 避免把数据库查询、正则匹配、文件读取等重操作写在右侧之前
用短路天然防异常,不靠 try-catch 补救
短路不只是省性能,更是防御性编程的默认手段:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
str != null && str.length() > 0:不会触发NullPointerException -
list != null && !list.isEmpty() && list.get(0) != null:逐层守门,任一失败就终止 -
divisor != 0 && value % divisor == 0:避开除零错误 - 反例:
user.getRole().equals("ADMIN") && user != null会先调方法,可能 NPE
别让逻辑藏在一行里
多个条件连写虽紧凑,但难读、难改、难测试:
- 提取为语义明确的布尔变量:
boolean canEdit = user != null && user.hasRole("EDITOR") && !doc.isLocked(); - 封装成私有方法:
isEligibleForRefund(order),内部处理金额、状态、时间等组合规则 - 方法名本身即文档,比注释更可靠;也方便复用和单独单元测试
括号不是可选项,是必选项
&& 优先级高于 ||,但人脑不记优先级表:
-
a == 1 && b == 2 || c == 3实际等价于(a == 1 && b == 2) || c == 3,不是你想的a == 1 && (b == 2 || c == 3) - 混合使用时一律加括号:
(isLoggedIn && hasPermission) || isAdmin - 哪怕只有一处 || 或 &&,加括号也提升可维护性,避免后续修改引入歧义
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










