Java 中运算符的优先级
运算符是特殊符号,它们对一个、两个或三个操作数执行特定运算,然后返回结果。
下表中的运算符按优先顺序列出。
运算符出现的位置越靠近表的顶部,其优先级就越高。
优先级较高的运算符先于优先级相对较低的运算符进行计算。
同一行上的运算符具有相同的优先级。
当相同优先级的运算符出现在同一表达式中时,必须有一条规则来控制首先计算哪个运算符。即除赋值运算符外,所有二元运算符均从左到右求值; 赋值运算符是从右到左计算的。
需要注意的是,运算符的优先级并不是绝对的,可以通过使用圆括号()来改变运算的顺序
Operators | 优先级(自上而下) |
---|---|
postfix | expr++ expr-- |
unary | ++expr --expr +expr -expr ~ ! |
multiplicative | * / % |
additive | + - |
shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
ternary | ? : |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
解释:
后缀运算符(Postfix Operators):在操作数之后进行操作,如后缀递增(i++)和后缀递减(i--)。
前缀运算符(Prefix Operators):在操作数之前进行操作,如前缀递增(++i)和前缀递减(--i)。
一元运算符(Unary Operators):对单个操作数进行操作,如正号(+)、负号(-)、逻辑非(!)和位非(~)。
乘法和除法运算符(Multiplicative and Division Operators):包括乘法(*)、除法(/)和取模(%)。
加法和减法运算符(Additive Operators):包括加法(+)和减法(-)。
移位运算符(Shift Operators):包括左移(<<)、右移(>>)和无符号右移(>>>)。
关系运算符(Relational Operators):包括小于(<)、小于等于(<=)。
相等运算符(Equality Operators):包括相等(==)和不相等(!=)。
位运算符(Bitwise Operators):包括按位与(&)、按位或(|)、按位异或(^)和按位取反(~)。
逻辑运算符(Logical Operators):包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
条件运算符(Conditional Operators):包括条件表达式(? :)。
赋值运算符(Assignment Operators):包括简单赋值(=)和复合赋值(+=、-=等)。