Java逻辑运算符&&和||具有短路特性:左侧为false时&&右侧不执行,左侧为true时||右侧不执行;可通过自增、方法调用或空安全场景验证,而&和|无此特性。

Java 中逻辑运算符的短路特性,最直接的验证方式是观察右侧表达式是否被执行——尤其是当它带有可观测副作用(比如变量自增、方法调用、日志打印)时。
用自增操作验证 && 的短路
左侧为 false 时,&& 右侧不执行:
// 示例代码
int i = 5;
boolean result = (i 0);
System.out.println("i = " + i); // 输出:i = 5
System.out.println("result = " + result); // 输出:result = false
因为 i 是 false,整个 <code>&& 表达式结果已确定为 false,i++ 不会运行,i 保持为 5。
换成非短路的 &,结果就不同:boolean result2 = (i 0); → i 会变成 6。
用自增操作验证 || 的短路
左侧为 true 时,|| 右侧不执行:
立即学习“Java免费学习笔记(深入)”;
// 示例代码
int j = 10;
boolean flag = (j > 5) || (j++
System.out.println("j = " + j); // 输出:j = 10
System.out.println("flag = " + flag); // 输出:flag = true
j > 5 已为 true,整个 || 表达式结果必为 true,j++ 被跳过,j 值不变。
换成 |:右侧仍会执行,j 变成 11。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
用方法调用和日志验证实际效果
定义一个带打印的方法,能清晰看到执行痕迹:
// 辅助方法
static boolean logAndReturn(String msg, boolean value) {
System.out.println("→ 执行:" + msg);
return value;
}
测试短路行为:
boolean a = false && logAndReturn("右边被调用", true);
输出只有:无任何打印 → 右边未执行。
boolean b = true || logAndReturn("右边被调用", false);
同样无打印 → 右边被跳过。
而换成 & 或 |,两行日志都会出现。
在 if 条件中验证空安全场景
短路特性天然支撑防御性编程,也能反向验证其存在:
String str = null;if (str != null && str.length() > 0) { ... }
这段代码不会抛 NullPointerException,正是因为 str != null 为 false 时,str.length() 根本不触发。如果去掉短路(比如误写成 &),运行时就会报错。
你可以故意把 str 设为 null 并分别用 && 和 & 测试,就能直观确认短路是否生效。

















