Java中逻辑与(&&)和逻辑或(||)采用短路求值:&&在左操作数为false时跳过右操作数,||在左操作数为true时跳过右操作数;而&和|无短路特性且支持位运算,日常条件判断应优先使用&&和||。

Java中的逻辑与(&&)和逻辑或(||)不是简单地“两边都算完再判断”,而是短路求值——只要能确定最终结果,就立刻停止计算右边表达式。这是正确使用它们的关键。
表达式 a && b 的行为是:
- 先计算 a;
- 如果 a 为 false,整个结果一定是 false,跳过 b 的计算;
- 只有当 a 为 true 时,才继续计算 b,并以 b 的值作为最终结果。
常见用途:
str != null && str.length() > 0,如果 str 是 null,就不会调用 length()。user.isLoggedIn() && user.hasPermission("delete"),未登录时不会检查权限。表达式 a || b 的行为是:
- 先计算 a;
- 如果 a 为 true,整个结果一定是 true,跳过 b 的计算;
- 只有当 a 为 false 时,才计算 b,并以 b 的值作为最终结果。
常见用途:
name != null && !name.trim().isEmpty() ? name : "anonymous",但更简洁写法常配合 || 与非空判断结合(注意类型需一致);实际中常用 Objects.toString(obj, "default") 更安全。cache.get(key) != null || loadFromDB(key) != null,缓存没命中才查库。& 和 | 是按位运算符,也支持布尔类型,但没有短路特性:
- a & b:无论 a 是什么,b 都会执行;
- a | b:同样,b 总是会被计算。
除非你明确需要强制执行右侧逻辑(比如右侧有副作用,如日志、计数),否则日常条件判断中应优先用 && 和 ||。
⚠️ 注意:在 if 或 while 中误写成 & 可能引发空指针或多余计算,不易察觉。
把多层 if 拆成一行短路表达式,更清晰也更安全:
立即学习“Java免费学习笔记(深入)”;
if (list != null) {<br>
if (!list.isEmpty()) {<br>
if (list.get(0) != null) {<br>
doSomething(list.get(0));<br>
}<br>
}<br>
}&& 简化:if (list != null && !list.isEmpty() && list.get(0) != null) {<br>
doSomething(list.get(0));<br>
}每一环都天然保护后一环,可读性高,也不怕 NPE。
基本上就这些。记牢“短路”二字,就能避开大部分误用和潜在 bug。
以上就是在Java中如何正确使用逻辑与逻辑或_逻辑操作的行为说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号