&&,先计算左边是否false,如果是,直接不管右边的状态。
&,不管三七二十一,把左右都计算一遍。
但是在如下代码中,完全没有差别,是不是说在这个代码中它们是无差别的?
int i=1;
while (i>=1 && i<=99) {
i++;
}
System.out.println(i);
i=1;
while(i>=1 & i<=99) {
i++;
}
System.out.println(i);

解决方案 »

  1.   

    你的说的是他们的不同点, 你举得例子就是他们的相同点  
    都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false
      

  2.   

    &&具有短路功能 当第一个为false的时候,就不会执行第二个,& 没有短路功能,第一个式子为false还是会走到第二个式子,举个例子
    int i =1 ; while(i++>2 &i++>2){} system.out.println(i);这里面打印的i值就为3,而如果是&&,那么值就为2.