按位与(&)和短路与(&&)按位或(|)和短路或(||)的区别总结

&&:

短路与(并且),两边都为真则为真,见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

|按位或

(|)和(||)成立的条件是只要一侧表达式为真,结果就为真,在(|)运算时,无论左侧的表达式的值为真还是为假,都要判断右侧的表达式的值的真假,而(||)在运算时,只要左侧表达式的值为真,就不再判断右侧表达式的值了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容