Java之&&、||

逻辑运算符:&&和|| 是按照“短路”方式求值的,如果第一个操作数已经能够确定表达式的值,第二个操作数就不会计算了;

&& ,||介绍:
&&(短路与),||(短路或)。

&&符号可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,

||符号可以作逻辑或运算符,表示逻辑或(or),当运算符有一边为true时,整个运算结果为true!

简单来说就是:
&& 只要第一个条件不满足,后面条件就不再判断
|| 只要满足第一个条件,后面的条件就不再判断

示例:

&& 当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

总结:

都为真,则为真。
有假则为假,无需再判断

package com.yu.bai.test;

public class Test {
    public static void main(String[] args) {
        String s = null;

        /**
         * &&:当第一个条件为真,但是不能最终确定这个if判断的结果是true还是false,还需要再判断第二个条件,
         * 就是短路逻辑与运算符,当且仅当两个操作数都为真,条件才为真
         * 
         * 结论:&& 短路逻辑与运算符的判断,只要有一个条件为false,
         * 那么此次判断可以结束,否则需要一直判断完所有的条件。
         */
        if((s==null) && (s.length()>0)){//s==null 第一个条件为true,还需要判断第二个条件s.length()>0
            System.out.println("(s==null) && (s.length()>0)---判断结果为false");
        }

        if((s!=null) && (s.length()>0)){//s!=null 第一个条件为false,其结果必定是false,这时候就不需要再判断第二个操作。
            System.out.println("(s!=null) && (s.length()>0)---判断结果为false");
        }
    }
}
|| 逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。

总结:

有真则为真,无需再判断。

package com.yu.bai.test;

public class Test {
    public static void main(String[] args) {
        String s = null;

        /**
         * || 短路逻辑运算符 ,如果任何两个操作数任何一个为真,条件为真。 
         * 当第一个条件为true,则不再需要判断第二个条件了
         */
        if ((s == null) || (s.length() == 0)) {
            //第一个条件为true,其结果必定是true,这时候就不需要再判断第二个操作,所以第二个操作不会抛空指针异常
            System.out.println("true");
        }

        int num = 1;
        if((s != null) || (num == 0)){
            System.out.println("不会输出这段话");
        }else{
            System.out.println("if判断的结果为false,所以输出else语句块的信息");
        }

        /**
         * 第一个条件为false,那么s==null,说明第二个条件中影藏着s==null的条件,
         * 也就是说,此时的第二个判断相当于(s == null) && (s.length() == 0)
         */
        if ((s != null) || (s.length() == 0)) {
            //第一个条件为false,其结果不能确定,这时候就需要再判断第二个操作,所以第二个操作会抛空指针异常
            System.out.println("java.lang.NullPointerException");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值