java运算符优先级应通过括号驱动和聚焦关键规则掌握,整数除法截断、取模符号随被除数、短路逻辑顺序及+号拼接歧义是易错点。

Java 运算符优先级不是靠死记硬背的,而是靠“括号驱动 + 关键规则聚焦”来保障逻辑正确。真正容易出错的地方,往往不在冷门运算符,而在 整数除法、取模符号、短路逻辑顺序、+ 的拼接歧义 这几处。
整数除法与浮点精度陷阱
Java 中两个整数相除,结果自动截断小数部分,不四舍五入也不报错。
-
错误写法:
int a = 10, b = 3; System.out.println(a / b);→ 输出 3(不是 3.33) -
安全写法: 显式转浮点类型:
(double)a / b或a / (double)b - 若需保留小数并控制精度,建议用
BigDecimal,而非依赖float/double的二进制近似值
取模(%)的符号规则必须明确
Java 中 % 的结果符号始终与被除数一致,不是除数。
-
10 % 3→ 1 -
-10 % 3→ -1(不是 2) -
10 % -3→ 1(除数符号不影响结果符号) - 判断奇偶请用
n % 2 == 0,它对负数也成立(因为-5 % 2 == -1,仍 ≠ 0)
逻辑运算符的短路特性与优先级组合
&& 和 || 是短路运算符,且优先级为:! > && > ||。这意味着表达式中 a || b && c 等价于 a || (b && c),而非 (a || b) && c。
- 利用短路避免空指针:
obj != null && obj.getValue() > 0—— 若obj为null,右侧不会执行 - 想强制按左到右顺序?加括号:
(a || b) && c - 慎用非短路运算符
&和|:它们会强制计算两边,仅在位运算或需副作用时使用(如必须执行右侧方法)
+ 号的双重身份:算术加法 vs 字符串拼接
+ 在遇到字符串时会触发拼接,且从左到右依次计算,结合性影响结果。
-
System.out.println(1 + 2 + "abc");→ "3abc"(先算 1+2=3,再拼接) -
System.out.println("abc" + 1 + 2);→ "abc12"(从左开始,每步都变成字符串) - 想确保数值计算优先?用括号:
"result: " + (1 + 2)→ "result: 3"
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











