Java运算符优先级从高到低依次为:括号、一元运算符、算术运算符、移位运算符、比较运算符、相等性判断、按位运算符、逻辑运算符、条件运算符、赋值运算符;实际编程中建议使用括号明确表达式顺序以提升可读性和避免错误。

Java中表达式的运算优先级决定了在没有括号的情况下,操作符的执行顺序。理解这些优先级有助于写出正确且易于理解的代码。
一、Java运算符优先级从高到低排序
以下是常见的Java运算符按优先级从高到低排列(同一级别的运算符具有相同的优先级,结合性决定执行方向):1. 括号与成员访问
- [] (数组下标)
- . (对象成员访问)
- () (方法调用或强制类型转换)
2. 一元运算符
- ++(前置/后置自增)
- --(前置/后置自减)
- +(正号)
- -(负号)
- !(逻辑非)
- ~(按位取反)
- (type)(强制类型转换)
3. 算术运算符(乘除模优先于加减)
立即学习“Java免费学习笔记(深入)”;
- *(乘)
- /(除)
- %(取模)
- +(加)
- -(减)
4. 移位运算符
- >>(右移,带符号)
- >>>(无符号右移)
5. 比较运算符
- 、>=(关系比较)
- instanceof(类型检查)
6. 相等性判断
- ==(等于)
- !=(不等于)
7. 按位与、异或、或
- &(按位与)
- ^(按位异或)
- |(按位或)
8. 逻辑与和或
- &&(短路与)
- ||(短路或)
9. 条件运算符(三元)
- ? : (条件表达式)
10. 赋值类运算符
- =、+=、-=、*=、/=、%=、>=、>>>=、&=、^=、|=
二、实际应用中的建议
虽然记住优先级有帮助,但在复杂表达式中应尽量使用括号明确计算顺序。
- 比如:
a + b * c会先算乘法,但写成a + (b * c)更清晰。 - 涉及逻辑判断时,如
flag && x != null && x.getValue() > 0,优先级正确,但可读性更重要。 - 避免写出像
a = b == c这样的表达式而不加括号,容易误解。
三、常见易错点提醒
-
== 的优先级低于算术运算?不对! 实际上它低于算术但高于逻辑运算,比如
a + b == c + d是合法且先算两边加法。 -
&& 和 || 的优先级远低于比较运算,所以
a 10不需要额外括号。 -
位运算符 &, ^, | 的优先级比逻辑运算低,常被误用,例如
a & b == c实际是a & (b == c),通常不是本意。
基本上就这些。掌握优先级能减少错误,但依赖括号才是写出清晰代码的关键。










