Java运算符优先级和结合性

2018-09-06  本文已影响15人  测试老杨

问题
如下代码运行结果是啥?

package day06;

public class YzcOperatorTest {
    public static void main(String[] args) {
        int a=1,b=2;
        boolean flag = a<b||b<a&&a+b<0;
        System.out.println(flag);//true
    }
}

运算符优先级

该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级16的优先级最低。


image.png

运算符的结合性

相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合和从右到左结合两种方式。
比如:
表达式a+b+c
+是从左向右结合(左结合)的,那么该表达式被解析为 (a+b)+c

表达式a=b=c
=是从右向左结合(右结合)的,那么该表达式被解析为a=(b=c)

表达式a > b ? b > c ? 1 : 0 : 2
?:是从右向左结合(右结合)的,那么该表达式被被解析为 a > b ? (b > c ? 1 : 0) : 2

参考资料

http://www.cnblogs.com/zjfjava/p/5996666.html

http://www.cnblogs.com/softwaretesting/archive/2011/08/16/2139068.html

上一篇下一篇

猜你喜欢

热点阅读