java 运算符的优先级
| 运算符 | 结合性 |
|---|---|
| [ ] . ( ) (方法调用) | 从左向右 |
| ! ~ ++ -- +(一元运算) -(一元运算) | 从右向左 |
| * / % | 从左向右 |
| + - | 从左向右 |
| << >> >>> | 从左向右 |
| < <= > >= instanceof | 从左向右 |
| == != | 从左向右 |
| & | 从左向右 |
| ^ | 从左向右 |
| | | 从左向右 |
| && | 从左向右 |
| || | 从左向右 |
| ?: | 从右向左 |
|
=
|
从右向左
|
在 Java 中,经常会用到多个运算符在一起组成判断表达式。但是如果不清楚各个运算符的优先级可能会导致难以察觉的bug.
如果在一个表达式中且 &&与|| 2种运算符时,建议用括号()来括住业务上要执行的优先级。
在以下例子中,第三个输出用括号提升了优先级使代码可读性更好。
1 public class TestAndOr { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 int a =1; 6 int b =2; 7 int c =3; 8 9 //&&的优先级高于|| ,a<0&& b==2 会先运算 10 if(a<0 && b==2 || c==0){ 11 System.out.println("yes"); 12 }else{ 13 System.out.println("no"); 14 } 15 16 //&&的优先级高于|| ,c==0 && a<0会先运算 17 if(b==2 || c==0 && a<0 ){ 18 System.out.println("yes2"); 19 }else{ 20 System.out.println("no2"); 21 } 22 23 //括号的优先级高与&&,使用括号来提升了 b==2||c==0 的优先级 24 if((b==2 || c==0) && a<0 ){ 25 System.out.println("yes3"); 26 }else{ 27 System.out.println("no3"); 28 } 29 30 31 } 32 33 } 34 35 36 //结果 37 no 38 yes2 39 no3
一花一叶总关情

浙公网安备 33010602011771号