& 与 && 有什么区别? 谢谢!

解决方案 »

  1.   

    &&会短路运算
    比如
    if(1!=2 && 2 == 2)
    那么只判断第一个表达式(1!=2)是否的话,他就不会取判断后面那个表达式(2==2)
    而&两个都会去判断!
    同理可得| 和 ||区别
    | 等同于 &
    || 等同于 &&
      

  2.   


    &绝不是两个都去判断那么简单。&是算数运算符,跟+, - 是一样的,是按位与运算。当然两个布尔值做与运算的结果跟&&效果是一样的
      

  3.   

    &是逻辑操作。&&是条件操作。
    1.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
    2.逻辑操作不会产生短路
      

  4.   

    我的理解是
    &是位运算,两个位做&运算,有一个位是0,则结果为0
    &&是And的意思,两个条件做&&运算,有一个是false,结果就是false
      

  5.   

    &是逻辑操作。&&是条件操作。 
    1.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 
    2.逻辑操作不会产生短路&是位运算,两个位做&运算,有一个位是0,则结果为0 
    &&是And的意思,两个条件做&&运算,有一个是false,结果就是false都可以理解吧平时用&&比较多,来温故下
      

  6.   

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
    &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
    &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。 
      

  7.   


    这个解释是对的&和&&比较的时候就是说的这个问题多本书上都是着重指出这个
      

  8.   

    嘿嘿...谢谢大家!不知道 哪位是正确的了。我知道 | 与|| 的区别 。但 & 与 && 的区别  和 | 与 || 的区别 一样吗?
      

  9.   

    &是位运算,&&是逻辑运算,是逻辑或
    if(a!=b && c==d)
    如果a!=b为真的话,后面就不去判断c==d这个条件,结果为真;否则就会判断,如果后面为真结果为真,后面为假结果为假。
    if(a!=b & c==d)
    当两个条件有一个为真结果为真,两个都假结果为假。
    谢谢!
      

  10.   


    首先:&&是逻辑运算符(两边必须都是boolean型);&是既可以用于位运算,又可以用于逻辑运算。当&是位运算符时,与&&就没关系了。同样是逻辑运算符时的区别:&&的特点就是执行短路运算。比如 false && (a == b++) ,这里的b++永远没有机会执行了。
    而用&不会执行短路运算。 false & (a == b++) 每次都会执行b++,虽然false & ? 时就已经确定了结果,&还是执著地要计算&右边的逻辑值。
      

  11.   

    &是为运算符,按位与,全为1即为1,有一个为0结果就为0。
    &&是条件运算符,返回值是boolean,形式是"条件1&&条件2",两个条件均为真才返回true,否则返回false。如果条件1就为false,条件2就不会执行了。
    写个程序并附上结果给你看下,你就明白了!源程序:
    public class Test {
    public static void main(String[] args)  {
    //测试按位与&运算符
    int i=10,j=15;
    int result=i&j;
    System.out.println(i+"二进制表示:"+Integer.toBinaryString(i));
    System.out.println(j+"二进制表示:"+Integer.toBinaryString(j));
    System.out.println(result+"二进制表示:"+Integer.toBinaryString(result));
    System.out.println("i&j="+result);
    //测试条件运算符&&
    if((i<j)&&(result>0))System.out.println("两个条件均是正确的");
    else 
    System.out.println("两个条件至少有一个是错误的"); }
    }
    运行结果:
    10二进制表示:1010
    15二进制表示:1111
    10二进制表示:1010
    i&j=10
    两个条件均是正确的
      

  12.   

    在java中:&     非简洁与       &的左右两边都会被执行   
                                              &&   简洁与         当左边的为假时右边的被忽略不用执行   
        
      三楼说的是c和c++中的作用吧
      

  13.   

    &是逻辑操作。&&是条件操作。 
      

  14.   

    & 是位运算
    && 是逻辑运算
      

  15.   

    &是位运算符也可以是逻辑与,在做逻辑与的时候有短路,也就是如果第一个条件不成立的话,第二个条件不再计算。
    &&是逻辑运算符,表示逻辑与(and),并且两个条件都计算。
      

  16.   

                  &              &&               |          ||算数运算符     是                否                 是           否
                 
    逻辑运算符     是                是(会短路)        是           是(会短路)
      

  17.   

    &是位运算符,&&是逻辑运算符。
      

  18.   

     &&是逻辑与运算符,而&是位运算符!