当我们对编程有一定的理解后,我们可以知道代码是一步一步执行的,但是,当多个运算符出现在一个表达式中,这样应该怎么运算呢?在数学中,我们都是先算括号,然后算乘除,再算加减,不同的运算符号有不同的优先级。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。在Java语言中,其运算符优先级如下图表示,优先级从1开始:
优先级 | 运算符 | 结合性 |
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
优先级 | 运算符 | 结合性 |
其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方可以使用小括号去进行替代:
inta=1; intb=a<<1+2; // 比较友好的写法↓intb=a<< (1+2);
这样书写代码,更方便编写代码,也便于代码的阅读和维护。
比较复杂的条件语句,建议分割成不同的命名含义,这样对其他人来说比较友好。