掌握四组高频运算符优先级关系:1. ! 高于 == 和 &&;2. && 高于 ||;3. 算术运算符高于关系运算符;4. 赋值运算符优先级最低;混合运算必须加括号明确意图。

不用硬背15级表格,重点是掌握几组高频关系,并用括号把意图写清楚。优先级本身不能改,但你可以让它不成为 bug 的源头。
记四组关键顺序,覆盖 90% 场景
真正常出错的不是冷门运算符,而是这几类混合:
-
!(逻辑非)比 == 和 && 都高 →
!a == b等价于(!a) == b,不是!(a == b) -
&& 比 || 高 →
a || b && c先算b && c,等价于a || (b && c) -
算术(
+ - * / %)比 关系(== !=)高 →a + b == c先加再比,符合直觉 -
赋值(
= +=等)优先级最低 →a = b == c等价于a = (b == c),不会误成(a = b) == c
括号不是可选,是默认动作
只要表达式里有两类以上运算符,就该加括号——这不是啰嗦,是防止别人(包括明天的你)误解:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 写
if ((x > 0) && (y ,不写 <code>if (x > 0 && y ;虽然结果一样,但一眼能看出判断的是两个独立条件 - 位运算混比较时必须加:
if ((flags & ENABLE_LOG) != 0),不写括号会变成flags & (ENABLE_LOG != 0),语义全错 - 复杂算术也建议分组:
result = (a * b) + (c / d) - (e % f),结构清晰,后续加项也不易错
警惕三类“看着对,其实错”的写法
这些语法合法,但极易引发逻辑偏差或维护陷阱:
-
a & b == c:实际是a & (b == c)(因为==优先级高于&),想按位判断就得写(a & b) == c -
list.get(i) == null || list.get(i).length() == 0:虽然优先级没错,但重复调用get(i)可能空指针,应先存变量 -
a = b = c:虽按右结合执行为a = (b = c),但可读性差,建议拆成两行
工具和习惯比记忆更可靠
现代开发环境能帮你提前发现隐患:
- IntelliJ IDEA 对无括号的关系+逻辑组合(如
a == b && c == d)会提示 “Add parentheses to clarify precedence” - SonarQube 或 ErrorProne 可配置规则,强制要求
==两侧加括号 - 开启编译器参数
-Xlint:all,有时能捕获潜在优先级混淆警告
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










