Java中组合条件需用&&、||、!配合括号:&&要求全真,||满足一真即可,注意短路特性防NPE;括号明确优先级避免歧义;取反时!须包裹整个表达式;字符串用equals、判空前置、布尔变量直接使用。

Java中组合多个条件主要靠逻辑运算符 &&(与)、||(或)、!(非),配合括号明确优先级,就能写出清晰、安全、可读性强的条件表达式。
用 && 和 || 连接多个判断条件
多个条件同时成立用 &&,任一成立即可用 ||。注意短路特性:&& 左边为 false 时,右边不执行;|| 左边为 true 时,右边跳过。这既提升效率,也避免空指针等异常。
-
正确写法(推荐):
if (user != null && user.isActive() && user.getAge() >= 18) -
错误写法(可能抛 NPE):
if (user.isActive() && user != null)—— 若 user 为 null,调用 isActive() 直接报错
用括号控制运算顺序,提升可读性与准确性
逻辑运算符有默认优先级(! > && > ||),但混合使用时极易出错。显式加括号不仅符合预期,还让别人一眼看懂你的逻辑意图。
-
模糊写法(难读易错):
if (a || b && c)—— 实际等价于a || (b && c),但容易误读为(a || b) && c -
清晰写法(强烈建议):
if ((a || b) && c)或if (a || (b && c))
用 ! 配合括号取反复杂条件
对一组条件整体取反,一定要把整个表达式用括号包住,否则 ! 只作用于紧邻的操作数,极易引发逻辑翻车。
立即学习“Java免费学习笔记(深入)”;
-
常见错误:
if (!user.isActive() && user.getAge() > 18)—— 实际是(!user.isActive()) && ...,不是“非(活跃且成年)” -
正确写法:
if (!(user.isActive() && user.getAge() >= 18))—— 表示“不满足‘活跃且成年’这个整体条件”
避免常见陷阱:== 与 equals、null 安全、布尔冗余
写条件时细节决定健壮性。字符串比较别用 ==,对象判空要前置,布尔变量别画蛇添足加 == true/false。
-
字符串比较: 用
"admin".equals(role),而不是role == "admin" -
null 安全检查:
if (list != null && !list.isEmpty()),而非if (!list.isEmpty() && list != null) -
布尔变量简化: 写
if (isLogin),别写if (isLogin == true)或if (isLogin.equals(true))










