# 运算符优先级

优先级从上到下依次递减，最上面具有最高的优先级，逗号操作符具有最低的优先级。

相同优先级中，按结合顺序计算。**大多数运算是从左至右计算，只有三个优先级是从右至左结合的，它们是单目运算符、条件运算符、赋值运算符**。

基本的优先级需要记住：

  - 指针最优，单目运算优于双目运算。如正负号。
  - 先乘除（模），后加减。
  - 先算术运算，后移位运算，最后位运算。请特别注意：`1 << 3 + 2 & 7`等价于 `(1 << (3 + 2)) & 7`.
  - 逻辑运算最后计算。


## 优先级表

| 运算符	     | 结合性     |
| :------------- | :------------- |
|[ ] . ( ) (方法调用)|从左向右  |
|! ~ ++ -- +(一元运算) -(一元运算) |从右向左|
|* / %  |从左向右 |
|+ -　| 从左向右|
|<< >> >>> |从左向右|
|< <= > >= instanceof|	从左向右|
|== !=| 从左向右|
|&|从左向右|
|^|从左向右|
| &#124;  |从左向右|
|&& | 从左向右|
|  &#124;&#124;  | 从左向右|
| ?:  | 从右向左|
| = += -= *= /= %= &= &#124;= ^= <<= >>= >>=  | 从右向左|
|，|	从左到右|

> 无符号右移运算符 `>>>`，无符号右移的规则只记住一点：**忽略了符号位扩展，0 补最高位**。无符号右移规则和右移运算是一样的，只是填充时不管左边的数字是正是负都用 0 来填充，无符号右移运算只针对负数计算，因为对于正数来说这种运算没有意义。无符号右移运算符 `>>>` 只是对 32 位和 64 位的值有意义
