java逻辑运算符包括&&(短路与)、&(非短路与/按位与)、||(短路或)、|(非短路或/按位或)和!(逻辑非),均返回boolean值;&&和||具短路特性,&和|强制执行两边,!仅作用于布尔表达式。

Java 中逻辑运算符用于对布尔表达式进行与、或、非判断,结果始终是 boolean 类型(true 或 false)。它们不直接操作数值,而是基于条件表达式的真假做组合判断。
一、与判断:&&(短路与)和 &(按位与/非短路与)
-
&&是最常用的关系逻辑“与”,要求左右两边都为true,整体才为true。
它有短路特性:左边为false时,右边表达式不执行,直接返回false。int x = 3; boolean result = (x > 5) && (x++
-
&也会判断“与”,但无论左边真假,右边一定执行(无短路)。它还能用于整数的按位与运算。int x = 3; boolean result = (x > 5) & (x++
✅ 日常条件判断一律用
&&;只有明确需要两边都执行(比如副作用逻辑),或做位运算时才用&。
二、或判断:||(短路或)和 |(按位或/非短路或)
-
||表示“或”,只要左右任一为true,整体就为true。
同样具备短路性:左边为true,右边跳过不计算。int y = 7; boolean flag = (y 0); // 左边 true,y-- 不执行 → y 仍为 7
-
|会强制计算两边,适用于必须保证右侧执行的场景,或整数按位或。boolean flag = (y 0); // 即使左边 true,y-- 仍执行 → y 变成 6
✅ 条件分支中优先用
||;避免因跳过右侧导致逻辑遗漏时再考虑|。
三、非判断:!(逻辑取反)
-
单目运算符,作用于一个布尔表达式,把
true变false,false变true。boolean a = true; boolean b = !a; // b 为 false if (!(score >= 60)) { System.out.println("不及格"); } 注意:
!不能用于非布尔类型(如!5编译报错),但可嵌套使用,如!!flag等价于flag。
四、实际写法建议
-
多条件组合时,善用括号提高可读性:
if ((age >= 18) && (hasID) && (!isBanned)) { ... } 避免在逻辑表达式中混入有副作用的操作(如
i++),除非你清楚短路规则;判空推荐用
Objects.nonNull(obj)+&&,防止NullPointerException;字符串比较别写
str != null && str.equals("ok"),应写成"ok".equals(str)—— 更安全,且天然规避空指针。
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











