java中&&与||短路的详解

public void complicatedexpression_r(){
    int x=20, y=30;
    boolean b;
    b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60;
    System.out.println(b);
}



//false

&&与操作,||或操作都是短路操作符,

&&与操作时一旦遇到false就停止执行当前关系式(x > 50 && y > 60 )中的后续代码

||或操作时一旦遇到true也停止执行当前关系式中的后续代码

 > ,<只会得到true/false

化简为false || false || false || false 结果为false

& ,| 没有短路效果

与 都为true才返回true,只要有true就返回true

或 都为false则返回false,只要有true就返回true

public static void main(String[] args) {
        int x=20, y=30;
        boolean b;
        b = x > 50 && y > 60 || x > 50 && y < -60 || x < 50 && y < 60 || x < -50 && y < -60;
        System.out.println(b);
    }

false || false || true || false

//true
public static void main(String[] args) {
        int x=20, y=30;
        boolean b;
        b = false||false|| true || false;
        System.out.println(b);
    }


true

//与和或的运算依据并不是所谓的真真假假,而是true/false 

 

 短路运算符只能用于逻辑表达式内,会影响返回值,返回值只会是true或false;非短路运算符可用于位表达式和逻辑表达式内

也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。

推荐使用短路运算符进行逻辑判断,因为短路运算符在一定程度上可以提高程序运行的效率

局部变量在第一次使用前必须赋值,所谓的使用就是指读取变量的值,所以这里没有任何问题,另一方面,局部变量没有默认值

最后此题即使不知道短路与 ,只要知道优先级即可做对。

优先级就不细说了,类似加减乘除运算法则。

 
posted @ 2020-09-29 23:20  lsdblawvb  阅读(524)  评论(0)    收藏  举报