在現實生活中我們的邏輯都差不多是從左向右的,在數學運算中,它的運算都基本也是從左向右運算的。
但在Java中就不一定了,Java中大部分的運算符其實也是自左向右計算的,但是單目運算符、賦值運算符與三目運算符例外,它們是自右向左計算的。
一般來說,單目運算符優先級較高,賦值運算符優先級較低。算術運算符優先級較高,關系和邏輯運算符優先級較低。多數運算符具有左結合性(自左向右),單目運算符、三目運算符、賦值運算符具有右結合性(自右向左)。
Java中運算符的優先級共分為14個等級,其中1級最高,14級最低。在同一個表達式中運算符優先級高的先執行。
下表列出了所有的運算符的優先級以及結合性:
優先級 | 運算符 | 結合性 |
1 | ()、[]、{} | 自左向右 |
2 | !、+、-、~、++、-- | 自右向左 |
3 | *、/、% | 自左向右 |
4 | +、- | 自左向右 |
5 | <<、>>、>>> | 自左向右 |
6 | <、<=、>、>=、instanceof | 自左向右 |
7 | ==、!= | 自左向右 |
8 | & | 自左向右 |
9 | ^ | 自左向右 |
10 | | | 自左向右 |
11 | && | 自左向右 |
12 | || | 自左向右 |
13 | ? : | 自右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、<<=、>>=、>>>= | 自右向左 |