&是位运算,&&是逻辑运算;
具体的区别看下面代码:
package telecom.test;
public class Test {
public static void main(String[] args) {
int a = 2;
int b = 1;
if(a==1 & (++b)==3){//a==1为假,此处会执行++b
System.out.println("a1="+a);
System.out.println("b1="+b);
}
System.out.println("a2="+a);
System.out.println("b2="+b);
a = 2;
b = 1;
if(a==1 && (++b)==3){//a==1为假,此处不会执行++b
System.out.println("a3="+a);
System.out.println("b3="+b);
}
System.out.println("a4="+a);
System.out.println("b4="+b);
}
}
结果:
a2=2
b2=2
a4=2
b4=1