java逻辑运算符&&、||、!用于联合判断,需注意短路特性、优先级及括号使用;复杂场景推荐predicate.and()/or()函数式组合。

Java 中用 &&、|| 和 ! 这三个逻辑运算符就能把多个条件串起来做联合判断,关键在于理清组合意图、优先级和执行顺序。
用 && 实现“全都要”
当所有条件都必须成立才执行某段逻辑时,用 && 连接。它有短路特性:前面一个为 false,后面整个不执行,能避免空指针或无效调用。
-
if (user != null && user.isActive() && user.getAge() >= 18)—— 三个条件缺一不可 - 把可能为
null的对象放在左边,比如obj != null && obj.isValid(),安全又高效 - 别写太长的链式 && 表达式,可读性下降;复杂判断建议拆成布尔变量或提取方法
用 || 实现“满足一个就行”
|| 表示“或”,只要有一个为 true,整体就为 true,同样具备短路:前面为 true 就跳过后续判断。
if (status.equals("active") || status.equals("pending") || status.equals("trial"))- 多个相同字段的等值判断,可用
Set.of(...).contains(status)替代,更简洁 - 注意别把
||和&&混用却不加括号,比如a || b && c实际等价于a || (b && c),不是你想的(a || b) && c
用 ! 和括号控制否定范围
! 只作用于紧邻的表达式,想否定整个组合,必须用括号包住。
- 错误写法:
!a == null || b.isEmpty()—— 实际是(!a) == null || b.isEmpty(),语义错乱 - 正确写法:
!(a == null || b.isEmpty()),等价于a != null && !b.isEmpty() - 对字符串非空校验,推荐
Objects.nonNull(str) && !str.isBlank(),比嵌套!更直白
用 Predicate.and() 做函数式组合
适合校验类场景(如参数合法性检查),支持链式、可复用、天然短路。
Predicate<string> valid = nonNull.and(s -> s.length() > 5).and(s -> s.contains("@"));</string>- 每个
and返回新对象,原 Predicate 不变,线程安全 - 若需“或”逻辑,可用
Predicate.or();多个条件统一处理,可封装工具方法andAll(...)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











