前言
由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因此不同的运算符有着不同的优先级来保证运算的合理性和结果的正确性、唯一性。不同的语言有着不同的运算符优先级,以下只列举Java中运算符的优先级。
Java语言优先级
Java中运算符按优先顺序列出了各种运算符。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
优先级 | 运算符分类 | 运算符 | 名称 | 结合性 |
由 高 到 低 | 分隔符 | . [] ( ) | 点、方括号、圆括号 | 从左向右 |
一元运算符 | ! ~ ++ -- + - | 逻辑非、按位非、自增、自减、正号、负号 | 从右向左 | |
算术运算符 | * / % | 乘、除、取余 | 从左向右 | |
+ - | 加、减 | |||
移位运算符 | << >> >>> | 左移位运算符、带符号右移位运算符、无符号右移 | 从左向右 | |
关系运算符 | < <= > >= instanceof | 小于、小于或等于、大于、大于或等于、确定某对象是否属于指定的类 | 从左向右 | |
比较运算符 | == != | 等于、不等于 | 从左向右 | |
逻辑运算符 | & | 按位与 | 从左向右 | |
^ | 按位或 | |||
| | 按位异或 | |||
&& | 短路与 | |||
|| | 短路或 | |||
三目运算符 | ?: | 条件运算符 | 从右向左 | |
混合/赋值运算符 | = *= /= %= += -= <<= >>= >>>= &= *= |= | 略 | 从右向左 |