欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java &&和&的区别

程序员文章站 2022-03-30 09:03:56
...

&& 逻辑与,|| 逻辑或             称为逻辑运算符

&    按位与,|  按位或            称为位运算符

if(a==1&&b==2) 这是说既要满足a=1也要满足b=2

if(a==1||b==2) 这是说或者满足a=1或者要满足b=2

而a&b或者a|b则是二进制的与或运算

&同为1时为1,否则为0

|同为0时为0,否则为1


3&5则     

                    0011   

                 &0101     

                    0001   

     等于1


3|5则   

                   0011  

                |0101   

                   0111  

    等于7

&&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假 

||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真


例题:

下面代码的输出结果是什么?

  1. class Test {
  2.     public static void main(String[] args) {
  3.         int a = 3;
  4.         int b = 4;
  5.         if ((a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)) {
  6.             System.out.println("判断结果为true, a=" + a + ",b=" + b);
  7.         } else {
  8.             System.out.println("判断结果为false, a=" + a + ",b=" + b);
  9.         }
  10.     }
  11. }

A.判断结果为true, a=3,b=5

B.判断结果为true, a=3,b=4

C.判断结果为false, a=3,b=5

D.判断结果为false, a=4,b=4


如果忽略&和&&的区别,很可能得到答案B.

但正确答案其实是A.


解析:短路与&&只要当前项为F,直接得出结果为F,不进行后面的运算(一假必假)

          短路或 | |  只要当前项为T,直接得出结果为T,不进行后面的运算(一真必真)


短路与&&和短路||都提高了逻辑表达式的计算效率.


http://www.360doc.com/content/16/0716/22/16920390_576148549.shtml

https://blog.csdn.net/sinat_33033041/article/details/75557404