在一个表达式中可能包含多个有不同运算符连接起来的, 具有不同数据类型的数据对象; 由于表达式有多种运算, 不同的结合顺序可能得出不同结果甚至出现错误运算错误, 因为当表达式中含多种运算时, 必须按一定顺序进行结合, 才能保证运算的合理性和结果的正确性, 唯一性.
优先级
1. 优先级与求值顺序无关. 如 a+b && bc, 虽然优先级最高, 但这个表达式求值顺序是从左到右.
2. 优先级从上到下依次递减, 最上面具有最高的优先级, 逗号操作符具有最低的优先级.
3. 相同优先级中, 按结合性进行结合. 大多数运算符结合性是从左到右, 只有三个优先级是从右至左结合的, 它们是单目运算符, 条件运算符, 赋值运算符.
4. 基本的优先级需要记住:
** 指针最优, 单目运算优于双目运算. 如正负号. 先算术运算, 后移位运算, 最后位运算. 请特别注意: 1 <<3 + 2 & 7 等价于 (1 << (3 + 2))&7. 逻辑运算最后结合. **
JAVA 语言的优先级
| 运算符 | 结合性 |
| ??? ∣ :?? |
|[ ] . ( ) (方法调用)| 从左向右 |
|! ~ ++ -- +(一元运算) -(一元运算)| 从右向左 |
|*/ %| 从左向右 |
| + -| 从左向右 |
| <<>>>>>| 从左向右 |
|<<=>>= instanceof | 从左向右 |
| == !=| 从左向右 |
| &| 从左向右 |
| ^| 从左向右 |
| \|| 从左向右 |
|&&| 从左向右 |
| \|\|| 从左向右 |
|?:| 从右向左 |
|=| 从右向左 |
来源: http://www.bubuko.com/infodetail-2976394.html