java运算符优先级可简化为7个逻辑区块:括号与单目、创建与类型转换、算术核心、移位、关系、逻辑、三目与赋值;高频冲突处用括号显式分组更可靠。

别硬背15级表格,重点是分层理解 + 抓住高频冲突点 + 用括号代替记忆。
记住7个逻辑区块,比记15级更管用
Java运算符优先级实际可压缩为7组,符合编码直觉:
- 括号与单目:()、[]、.、++/--(前置)、!、~、+/-(正负号)——最高,右结合
- 创建与类型转换:new、(int)等强制转换——优先级高于乘除,常被低估
- 算术核心:* / % → + -(注意:+ 用于字符串拼接时仍属此层)
- 移位:> >>>——比关系运算符高,但容易被当成“低优先级”,写 a + b
- 关系与相等: >= instanceof → == !=——instanceof 和
- 位与逻辑:& → ^ → | → && → ||——&& 比 || 高,a || b && c 等价于 a || (b && c)
- 赋值类:= += &=
必须加括号的3种高危场景
这些地方不加括号,几乎必然出错:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 位运算混比较:flags & MASK == 0 实际执行 flags & (MASK == 0),应写成 (flags & MASK) == 0
- 逻辑混赋值:a = b && c || d 语义模糊,建议拆成 if 或明确写为 a = ((b && c) || d)
- 自增混算术:++i + i++ 不仅依赖优先级,更受求值顺序影响(JLS未规定),不同JVM结果可能不同,直接禁止在同一表达式中多次读写同一变量
两个口诀,选一个顺口的就行
口诀只是辅助,关键在形成条件反射:
- 单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值(最简版,覆盖主干)
- 单目乘除为关系,逻辑三目后赋值(谐音梗,帮助联想层级)
其中“为”指位移(“为”谐音“位”),“后”无实义,纯为凑字——记不住就跳过,不影响使用。
真正靠谱的做法:括号优先,查表为辅
复杂表达式不靠脑算,靠结构清晰:
- 只要涉及 &、|、^ 和 ==、!= 同时出现,一律套括号
- 涉及 && 和 || 的混合判断,优先用 if-else 拆解,或至少用括号显式分组
- 写完表达式后,快速扫一眼:有没有可能被误读?有,就加括号——它不增加运行开销,只提升可维护性
- 真需要确认时,打开 IDE(如 IntelliJ)把光标停在运算符上,它会实时显示优先级提示;或查官方 JLS §15.21 等章节,比死记快得多
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










