Java运算符的优先级

  在现实生活中我们的逻辑都差不多是从左向右的,在数学运算中,它的运算都基本也是从左向右运算的。

  但在Java中就不一定了,Java中大部分的运算符其实也是自左向右计算的,但是单目运算符、赋值运算符与三目运算符例外,它们是自右向左计算的。

  一般来说,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性(自左向右),单目运算符、三目运算符、赋值运算符具有右结合性(自右向左)。

  Java中运算符的优先级共分为14个等级,其中1级最高,14级最低。在同一个表达式中运算符优先级高的先执行。

  下表列出了所有的运算符的优先级以及结合性:

Java运算符的优先级
优先级运算符结合性
1()、[]、{}自左向右
2!、+、-、~、++、--自右向左
3*、/、%自左向右
4+、-自左向右
5<<、>>、>>>自左向右
6<、<=、>、>=、instanceof自左向右
7==、!=自左向右
8&自左向右
9^自左向右
10|自左向右
11&&自左向右
12||自左向右
13? :自右向左
14=、+=、-=、*=、/=、&=、|=、^=、~=、<<=、>>=、>>>=自右向左