简单来说,我们经常用的是&&,这个是短路判断,也就是如果之前有一处是判断不成功的,就整个都不成功,例如
int i=0;
int j=0;
if(i++ ==1 && j++ ==1){
System.out.println("i=" + i+" j=" + j);
}else{
System.out.println("else i=" + i+" j=" + j);
}
最后输出的是else =1 j=0
如果是&,情况就不同了,这个不短路的。例如
int i=0;
int j=0;
if(i++ ==1 & j++ ==1){
System.out.println("i=" + i+" j=" + j);
}else{
System.out.println("else i=" + i+" j=" + j);
}
最后输出的是else =1 j=1;
看出区别了么,j的值不同,因为&不管前面个判断是否为真,后面一个表达式都会执行。