运算符的优先级
在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。接下来通过一张表来展示Java中运算符的优先级,其中数字越小表示优先级越高,如表1所示。
表1 运算符优先级
优先级 | 运算符 |
---|---|
1 | . [] () |
2 | ++ -- ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
根据表1所示的运算符优先级,分析下面代码的运行结果。
int a =2;
int b = a + 3*a;
System.out.println(b);
运行结果为8,由于运算符“”的优先级高于运算符“+”和“=”,因此先运算3a,得到的结果是6,再将6与a相加,最后通过运算符“=”赋值给变量b,得到最后的结果8。
int a =2;
int b = (a+3) * a;
System.out.println(b);
运行结果为10,由于运算符“()”的优先级最高,因此先运算括号内的a+3,得到的结果是5,再将5与a相乘,最后通过运算符“=”赋值给变量b,得到最后的结果10。
其实没有必要去刻意记忆运算符的优先级。编写程序时,尽量使用括号“()”来实现想要的运算顺序,以免产生歧义。