&&:
短路与(并且),两边都为真则为真,见false则false
如果第1个数为false,则发生短路(第2个数不走了)
||:
短路或(或者),有一边为真则为真,见true则true
如果第1个数为true,则发生短路(第2个数不走了)
! :
逻辑非(取反),非真则假,非假则真
&按位与
& 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式。
注意 :&为真的条件是两侧表达式都为真,但是即使我们判断出左侧表达式的值为false,程序也还是要继续执行去判断右侧的表达式值的真假。
int i=2,j=4;
System.out.println((++i==2)&(j++==4));//false
System.out.println("i="+i+" ,j="+j);//3,5
System.out.println(12&5);//与运算12=(1100)2 5=(0101) 1100+0101=0100 4
System.out.println((2==2)&(4==4));//真真 true
System.out.println((2==2)&(4!=4));//真假 false
System.out.println((2!=2)&(4==4));//假真 false
System.out.println((2!=2)&(4!=4));//假假 false
|按位或
(|)和(||)成立的条件是只要一侧表达式为真,结果就为真,在(|)运算时,无论左侧的表达式的值为真还是为假,都要判断右侧的表达式的值的真假,而(||)在运算时,只要左侧表达式的值为真,就不再判断右侧表达式的值了