优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+(正)、-(负)、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +(加)、-(减) | 从左向右 |
5 | <<、>>、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、<<=、>>=、>>>= | 从右向左 |
小总结:
从表中可以看出:
- 括号运算符的优先级最高
- 赋值运算符优先级最低
- 自增(++)、自减(–)、按位取反(~)、非(!)、正(+)、负(-),这6个运算符优先级很高,仅次于括号
- 算数运算符(加、减、乘、除、取余)的优先级大于移位运算符
- 比较运算符(大于等于、小于等于)的优先级仅次于移位运算符
- 相等运算符(!=、==)的优先级仅次于比较运算符
- 位运算符(~)的优先级排第二,其他位运算符(&、^、|)的优先级:与运算>或运算>异或运算,它们排在相等运算符之后
- 逻辑运算符(短路与>短路或),位居位运算符(&、^、|)之后
- 三目运算符的优先级很低,位居逻辑运算符之后,排倒数第二