口诀用于快速判断表达式运算顺序:先记主干结构,再用括号收尾,辅以典型例子锚定模糊点;推荐中文口诀“括号单目乘除加,移位关系相等与,异或或来短路跟,三目赋值排最后”,共八组,每组五字对应一个优先级层级。

背口诀不是为了默写,而是帮你在写代码时快速判断表达式怎么算。真正管用的方式是:先记主干结构,再靠括号收尾,最后用少量典型例子锚定模糊点。
核心口诀选一个顺口的,别贪多
推荐这个中文口诀:“括号单目乘除加,移位关系相等与,异或或来短路跟,三目赋值排最后”。它严格对应优先级分组,每句五个字覆盖一个层级,读起来有节奏:
- “括号单目”——() [] . ++ -- ! ~ + -(注意前置/后置++/--虽同属单目,但结合方向不同)
- “乘除加”——* / % 高于 + -,但字符串拼接 + 和算术 + 是同一个运算符,优先级相同,靠左结合性决定顺序
- “移位关系”——> >>> 高于 >= instanceof,所以
a 等价于(a ,不用加括号 - “相等与”——== != 高于 &(按位与),所以
a & b == c实际是a & (b == c),极易出错,必须加括号写成(a & b) == c - “三目赋值”——? : 是右结合,= 也是右结合,所以
a = b = c合法,等价于a = (b = c)
写代码时不硬套口诀,用三步定位法
遇到不确定的表达式,别翻表,直接按这三步走:
- 看最外层有没有括号:有就先算括号内,这是最可靠、最省脑力的方式。哪怕只包一层,也比记优先级更安全
-
找运算符类型边界:比如看到
&&和&混用,立刻意识到前者是逻辑短路,后者是按位运算,且&优先级更高,所以a & b && c先算a & b,再与c做逻辑与 -
验算一个最小反例:比如不确定
!a == b怎么断,就代入a=false, b=true,得!false == true → true == true → true;若本意是!(a == b),结果就错了——这时括号就是底线
几个高频踩坑点,直接记结论
这些不是靠口诀推出来的,而是经验总结,写代码时下意识避开:
-
字符串拼接 + 的优先级和算术 + 完全一样,所以
"x"+1+2是"x1"+2 → "x12",而1+2+"x"是3+"x" → "3x" -
位运算符 & ^ | 的优先级都低于 == !=,只要涉及比较,一律加括号:
(flags & READ) != 0,不写成flags & READ != 0 -
赋值运算符 = 右结合,但
==和=容易看混,if (a = b)是赋值并判断,不是比较——现代IDE会警告,但手写或面试时仍要警惕 -
instanceof 和 == 优先级接近,但 instanceof 左结合,且 null instanceof X 返回 false,所以
obj instanceof String == true会被解析为(obj instanceof String) == true,合法但冗余,建议直接写obj instanceof String
平时怎么练才不白背
口诀只是引子,真正固化靠小量高频练习:
- 每天花2分钟,把一个含多个运算符的表达式口头拆解,比如
a++ == b || c & d > e ? f : g += h,边说边指出哪部分先算、为什么 - 读别人代码时,专挑条件语句和初始化表达式,合上眼睛想括号该加在哪,再睁开核对
- 写新逻辑前,哪怕只有两个操作,也先加括号,等确认无误再删——养成习惯后,括号就成了本能,而不是负担
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











