java学习日志5—与和或,一个你经常用到但是却不了解的符号

当我们要同时判断多个逻辑运算的时候,就会用到:逻辑运算符


“&&”:运算符前后的操作返回结果都为真,结果为真
“||”:运算符前后的操作返回结果只要有一个为真,结果为真

我们通过代码来看


public   class   Test {
       public   static   void  main (String args[]){
           
              boolean  a=   true ;                                    //定义boolean变量a为true
              boolean  b=   false ;                                   //定义boolean变量b为true
           
           System.   out .println(   "a&&b=" +(a&&b));           //与操作
           System.   out .println(   "a&b=" +(a&b));             //与操作
           System.   out .println(   "a||b=" +(a||b));           //或操作
           System.   out .println(   "a|b=" +(a|b));             //或操作
     }
     
}

返回结果:

      a&&b=false
      a&b=false
      a||b=true
      a|b=true

从上面可以看出与和或的区别,下面我们通过详细的例子来看下与(&)和短路与(&&),或(|)和短路或(||)的差别

public   class   Test {
       public   static   void  main (String args[]){
              //用具体的实例看起来更直观
              /*
            * 这里a可以正确的被执行
            * 而b不行(被除数为0)
            * 正常的情况下b应该会报错
            */
              int  a=5/1;                         //定义正确的变量
              int  b=5/0;                         //定义错误的变量
           
           System.   out .println(a);
           System.   out .println(b);
     }
     
}
     
返回结果:

Exception in thread "main"  java.lang.ArithmeticException  : / by zero
     at test.Test.main(   Test.java:17  )

通过结果来看,我们的推理是正确的

现在我们先加入“&&”、“&”来看下它们之间的区别

1.测试&&

public   class   Test {
       @SuppressWarnings (  "unused" )
       public   static   void  main (String args[]){
           
              //因为加入&&和&运算符,我们假设两个错误的值
              if  ( 5!=5&&5/0==0) {
                System.   out .println(   "正确"  );
           }
           
     }
}

执行结果:

Exception in thread "main"  java.lang.ArithmeticException  : / by zero
     at test.Test.main(   Test.java:16  )


出现被除数是0的错误


2.测试&

public   class   Test {
       @SuppressWarnings (  "unused" )
       public   static   void  main (String args[]){
           
              //因为加入&&和&运算符,我们假设两个错误的值
              if  ( 5!=5&5/0==0) {
                System.   out .println(   "正确"  );
           }
     }
}

执行结果:

Exception in thread "main"  java.lang.ArithmeticException  : / by zero
     at test.Test.main(   Test.java:13  )



仍然返回被除数是0的错误,这是因为“与”运算是将所有的程序运行完,那么或会出现怎么样的结果呢,我们来看看下面的代码

3.测试|

public   class   Test {
       @SuppressWarnings (  "unused" )
       public   static   void  main (String args[]){
           
              //因为加入||和|运算符,我们假设一个正确的和一个错误的
              if  ( 5==5|5/0==0) {
                System.   out .println(   "正确"  );
           }
     }
}

执行结果:

Exception in thread "main"  java.lang.ArithmeticException  : / by zero
     at test.Test.main(   Test.java:13  )



结果还是报错,被除数为0,这说明,或"|"运算也是要执行所有的语句,那短路或"||"呢,我们接着看

4.测试||

public   class   Test {
       @SuppressWarnings (  "unused" )
       public   static   void  main (String args[]){
           
              //因为加入||和|运算符,我们假设一个正确的和一个错误的
              if  ( 5==5||5/0==0) {
                System.   out .println(   "正确"  );
           }
     }
}
     
执行结果:

正确

这说明短路或“||”只执行了代码中“5=5”就退出程序了,这对于或运算来说就是我们想要的效果,既达到了目的,又提高了代码的利用率





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值