Java逻辑运算需注意四点:仅作用于boolean类型;&&/||具短路性,&/|不短路;优先级易混淆,推荐加括号;Boolean包装类空值拆箱会抛NPE。

Java 逻辑运算出问题,多数不是因为不会用,而是没意识到几个关键细节:类型限制、短路行为、优先级陷阱和空值风险。只要盯住这四点,基本能避开绝大多数非预期结果。
只对 boolean 类型起作用
Java 的 &&、||、! 只接受 boolean 值,不能直接用于数字或对象引用。比如写 if (x & y) 或 if (!5) 会编译失败。
- 整数之间做“与或”必须用 &、|、^(位运算符),别混成 &&/||
- 判断对象是否为 null,得先转成布尔表达式:
obj != null,再参与逻辑运算 -
Boolean包装类要小心——null值在自动拆箱时抛NullPointerException
理解短路与非短路的区别
&& 和 || 是短路的:左边结果已能决定整体真假时,右边根本不会执行。而 & 和 | 对布尔类型也有效,但不短路——两边一定都算。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 安全空检查靠的是短路:
if (str != null && str.length() > 0),换&就可能 NPE - 如果右边有副作用(如日志、计数、状态修改),用错运算符会导致行为不一致
- 除非明确需要两边都执行,否则条件判断一律优先用 &&/||
括号比记忆优先级更可靠
逻辑运算符优先级是:! > && > ||,但跟比较运算符(==、、>)混用时极易出错。
- 像
!a == b实际等价于(!a) == b,不是a != b x > 0 || y > 0 && z 等价于x > 0 || (y > 0 && z ,不是(x > 0 || y > 0) && z- 复杂条件一律加括号,比如
!(x > 0 && y ,别省
别把 ! 当成 “不等于” 的简写
! 是一元取反,只作用于单个布尔表达式,不是二元比较操作符。
- 否定相等应写
!Objects.equals(a, b)或更直白的a != b(基础类型) - 写
!x > 0是语法错误——!不能作用于int - 否定复合条件必须包完整表达式:
!(flag1 && flag2),不是!flag1 && flag2
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










