java中|与||,&与&&的区别详解

写了代码近一段时间了,一直对与和或的判断模糊不清,可能是一直比较懒,没有用代码跑起过,建议用android studio跑一下对记住知识有很大的帮助,今天回顾一下,做下总结,

先看下这段代码的:

int i = 12;
        int q = 11;
        int w = 12;
        int e = 13;
        int r = 14;
        int y = 10;
        Log.e("msg",".............结果1"+(i != q && i!= w && i != e));
        Log.e("msg",".............结果2"+(y != q && y!= w && y != e));
        Log.e("msg",".............结果3"+(i != q || i!= w || i != e|| i != r));
        Log.e("msg",".............结果4"+(y != q || y!= w || y != e || y != r));
        Log.e("msg",".............结果5"+(i != w || y!= w || y != e || y != r));
        Log.e("msg",".............结果6"+(i != w || y!= 10 || 13 != e || 14 != r));
        if(i != q && i!= w && i != e){
            Log.e("msg",".....上.....");
        }else {
            Log.e("msg","......下....");
        }
        if( i != w|| i != w||i != w ||i!= y ){
            Log.e("msg",".....上.....");
        }else {
            Log.e("msg","......下....");
        }

打印结果:

01-02 14:37:53.744 10265-10265/com.boerc.view E/msg: .............结果1false
01-02 14:37:53.752 10265-10265/com.boerc.view E/msg: .............结果2true
01-02 14:37:53.752 10265-10265/com.boerc.view E/msg: .............结果3true
01-02 14:37:53.756 10265-10265/com.boerc.view E/msg: .............结果4true
01-02 14:37:53.760 10265-10265/com.boerc.view E/msg: .............结果5true
01-02 14:37:53.760 10265-10265/com.boerc.view E/msg: .............结果6false
01-02 14:37:53.764 10265-10265/com.boerc.view E/msg: ......下....
01-02 14:37:53.764 10265-10265/com.boerc.view E/msg: .....上.....

总结:

1种情况,执行到i!=w返回false,因为是与,只要有一个结果为false都为false;

2种情况,执行到y!=q返回true,因为是与,只要结果为true就继续执行,一直到最后结果都为true,所以返回结果为true;

3种情况,执行到i!=q 返回结果为true,因为是或,就算后面!!=w 结果为false,但没有执行到,就算执行到了,结果依然为true,只要结果有一个为true,结果返回为true;

4种情况,同上

5种情况,同上

6种情况,执行到第一个结果为false,继续执行,结果都为false,最后返回false

&  :不管怎么样左右两边都执行

&& : 当左边为真时会继续执行右边,直到执行到假为止,就停止执行

| :不管怎样左右两边都执行

|| : 当左边为假时会继续执行右边,直到执行到真时,就停止执行

规则:

&:只要两边有一个为false时,结果为false,全部为true时结果才是true
&& : 从左边开始,只要执行到false就停止执行,结果返回false,全部为true才是true,这种效率比单个&效率高,不用执行后面的判断

|:只要两边有一个为true时,结果都为true,全部为false时结果才是false

|| :从左边开始,只要执行到true就停止执行,结果返回true,全部为false时结果才是false,这种效率比单个||效率高,不用执行后面的判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值