java中运算符优先级的梳理

来源:互联网 发布:守望先锋数据查询 编辑:程序博客网 时间:2024/06/01 08:40

老生常谈,运算符的优先级,除了右结合的运算符之外,同级的运算符要按照从左到右的顺序依次计算。

什么是右结合的运算符呢?

经常使用的赋值=,以及派生出来的复合赋值运算符,都是从右到左的运算顺序,这就是右结合符号。不少参考书里都有个表,有的时候很多jb破书,炫耀很多一系列的运算符,弄一大堆在一个大……长串的表达式上,讲解这个顺序那个顺序的,jb毛线用处都没有,纯粹就是占据字数的sb,不解释,我把这些运算符的优先级梳理记忆和总结下;


1、众所周知,一般情况下有括号()就是级别最高的!先算括号里的,比如;

System.out.println(2 + 2 / 2);System.out.println((2 + 2) / 2);
打印;3和2

2、然后看表,最高级别的是数组下标【】、对象或者方法的调用 . 、方法的参数调用运算符(),这些都是从左到右的。

3、记住一点,正负号,非!,按位取反~,自增,自减,强制类型转换,new这是一个级别的,从左到右。

4、然后是最熟悉的加减乘除,按照数学的规则,先乘除后加减,同级的按照顺序,只不过这里多了个模运算%,和乘除一个级别的而已。也就是先乘除模,再加减而已。

5、然后是移位的,左移,右移,无符号右移是一个级别的。

6、关系运算符,也就是比较大小的,外加个instantof!一个级别的。

7、最后的判等==,和不等!=,很好理解,都是先算了,再判等吧……结合常识。

8、然后就是很好理解的;与>异或>或>双与>双或>三元,注意,三元运算符是从右到左的顺序。其余的是左到右。细细的感觉下,就是这样!

9、最后就是赋值类的包括复合的,也是从右到座的顺序!

int a1 = 10;int b1 = 11;System.out.println(a1 += b1 += 3);
等价于

int a1 = 10;int b1 = 11;System.out.println(a1 += (b1 += 3));
打印结果是24

注意!java里是没有逗号运算符的,在fou循环的表达式()中的逗号,起的是隔离的作用!


0 0
原创粉丝点击