| 运算符 | 名称 | 是否短路 | 主要用途 |
|---|---|---|---|
& | 逻辑与(非短路) | ❌ 非短路 | 条件判断、位运算 |
&& | 短路与 | ✅ 短路 | 条件判断(推荐) |
| | 逻辑或(非短路) | ❌ 非短路 | 条件判断、位运算 |
|| | 短路或 | ✅ 短路 | 条件判断(推荐) |
&、&&
boolean a = false;
boolean b = true;
// 使用 &(非短路)
if (a & (b = false)) { // 即使 a=false,仍然会计算 b=false
System.out.println("不会执行");
}
System.out.println(b); // false(b 被修改)
// 使用 &&(短路)
b = true; // 重置 b
if (a && (b = false)) { // a=false,直接跳过右边计算
System.out.println("不会执行");
}
System.out.println(b); // true(b 未被修改)
|、||
boolean x = true;
boolean y = false;
// 使用 |(非短路)
if (x | (y = true)) { // 即使 x=true,仍然会计算 y=true
System.out.println("执行");
}
System.out.println(y); // true(y 被修改)
// 使用 ||(短路)
y = false; // 重置 y
if (x || (y = true)) { // x=true,直接跳过右边计算
System.out.println("执行");
}
System.out.println(y); // false(y 未被修改)
625

被折叠的 条评论
为什么被折叠?



