Java 中 || 和 | 有什么区别
在 java 中,|| 是逻辑或运算符(短路),而 | 是条件或运算符(非短路)。两者的核心区别在于:当左操作数为 true 时,|| 会直接返回 true 并跳过右操作数的计算;而 | 无论左操作数结果如何,都会强制计算右操作数。这意味着如果右操作数包含副作用(如方法调用、赋值)或可能抛出异常(如空指针),使用 | 会导致程序行为改变。

为什么右操作数包含副作用时两者表现不同
当右操作数是一个带有副作用的方法调用时,|| 的短路特性会阻止该方法的执行,而 | 则会强制执行。这种差异在处理复杂条件判断或需要确保某些代码块被调用的场景中至关重要。

你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
public class ShortCircuitDemo {
public static boolean checkCondition(boolean left, boolean right) {
System.out.println("Right side evaluated: " + right);
return right;
}
public static void main(String[] args) {
// 测试 || (短路)
System.out.print("Using || with true, false: ");
boolean result1 = true || checkCondition(true, false);
System.out.println("Result: " + result1);
// 测试 | (非短路)
System.out.print("Using | with true, false: ");
boolean result2 = true | checkCondition(true, false);
System.out.println("Result: " + result2);
}
}
基于程序中某个输入、条件或结果的具体问题
在上述代码中,当左操作数为 true 时,|| 的输出显示“Right side evaluated”并未打印,因为右操作数未被执行;而 | 则打印了该信息,证明右操作数被计算。这验证了短路与非短路的实际行为差异。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










