java运算符计算核心是优先级和结合性:优先级决定运算顺序,结合性决定同级运算方向;括号最高,单目、算术、移位、关系、逻辑、条件、赋值依次降低;多数左结合,单目、条件、赋值右结合。

Java 运算符的计算,核心是两个规则:**优先级**和**结合性**。优先级决定谁先算,结合性决定同级运算从左还是从右执行。不用死记全部顺序,掌握关键层级 + 合理加括号,就能准确推演结果。
先看优先级主干结构
运算符按“重要程度”大致分层,从高到低:
-
括号(
())永远最高,包括方法调用、类型转换、数组下标[] -
单目运算符:如
++、--、!、-(负号)、~,作用于一个操作数,优先级很高 -
算术运算:
* / %先于+ -;注意%和/同级,从左到右算 -
移位运算:
、<code>>>、>>>,比关系运算符优先级高 -
关系运算:
== != = instanceof,结果是boolean -
逻辑运算:按优先级从高到低是
!→&→^→|→&&→|| -
条件运算符:
? :,从右向左结合,优先级低于逻辑运算 -
赋值运算符:
= += -= *= /= %= &= ^= |= >= >>>=,优先级最低,从右向左结合
再盯紧结合性细节
同一优先级的多个运算符,怎么连着算?关键看方向:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 绝大多数是从左向右:比如
10 - 3 + 2→ 先算10 - 3 = 7,再7 + 2 = 9 - 只有三类从右向左:单目运算符(如
!!b、++i)、条件运算符(a ? b : c ? d : e等价于a ? b : (c ? d : e))、赋值运算符(a = b = 5等价于a = (b = 5))
实际计算时怎么避免出错
别靠硬背,用这几招保准清晰:
- 遇到复杂表达式,第一反应是加小括号——它能强制提升局部优先级,也提高可读性。例如
a + b 易歧义,写成<code>(a + b) 或<code>a + (b 就一目了然 - 自增/自减要区分前置后置:
int i = 3; int x = i++ + ++i;中,先取i值3参与加法,再i变4;然后i先变5再取值,最终x = 3 + 5 = 8,i = 5 - 整数除法和取模要注意截断:例如
7 / 2得3,7 % 2得1;-7 / 2得-3(向零截断),-7 % 2得-1(余数符号随被除数) - 逻辑短路别忽略:
arr != null && arr.length > 0安全,因为前面为false时后面不执行;换成&就可能空指针
一个典型例子拆解
看这行:int r = a++ + ++b * 2 > c ? d & e : f | g;
- 最内层:
++b先执行(b加1),再算++b * 2 - 接着
a++取原值参与加法,之后a才加1 - 然后
+、*、>依次按优先级算出布尔值 - 最后
? :根据布尔结果选d & e或f | g,其中&和|在布尔上下文中是按位运算(若变量是int)
这种表达式虽合法,但可读性差,生产代码建议拆成多步或加括号明确意图。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










