Java笔试题学习之26(逻辑运算符和短路运算符)

public class Test26 {
    public static void main(String[] args) {
        int x=1,y=1;
        boolean b;
        b=x++<0&&y++<0||x++<0||y++<0&&x++<0&&y++<0;
        System.out.println(x);
        System.out.println(y);
    }
}

输出:
3
2

分析
1、与运算的优先级比或运算高
2、短路运算符 不会做多余的运算
例如:
表示1&&表达2 —》从左往后计算每个表达式的真假,如果表达式1为false了的话,与运算结果就为flase了,而不用再去计算表达式2的真假,也就是表达式2被短路掉了。

b=x++<0&&y++<0||x++<0||y++<0&&x++<0&&y++<0;
等价于:
b=(x++<0&&y++<0)||x++<0||(y++<0&&x++<0&&y++<0);

初始值x=1,y=1

先执行:x++<0&&y++<0 使用的是短位与 x是大于0的,所以x++<0为false,所以y++<0 就不会再计算
所以此时 x=2,y=1

再执行:y++<0&&x++<0&&y++<0,同样的道理 y++<0 为false,所以后面的就不会计算
所以此时x=2,y=2

最后执行:x++<0,此时x=3,y=2

你可能感兴趣的:(Java笔试题学习)