美文网首页七七八八打印zi
&、&&和|、||的区别

&、&&和|、||的区别

作者: RaphetS | 来源:发表于2016-10-14 12:13 被阅读4177次
    N4PUY6OXYPY2O~A)R3X4N6I.png

    首先来看两个概念:
    按位与:a&b是把a和b都转换成二进制数然后再进行与的运算;
    逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。

    &和&&的区别

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

    &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

    &还可以用作按位与的运算符,两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上

    (1)短路功能测试:

    public class AndTest {
        public static void main(String[] args) {
            String str=null;
            if (str!=null&str.equals("")) {
                System.out.println("true");
            }
            
        }
    }
    

    当为&,会报错 java.lang.NullPointerException,即空指针错误;
    当为&&,则不会报错

    (2)按位与:
    运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
    即:两位同时为“1”,结果才为“1”,否则为0
    例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 ;因此,3&5的值得1。

    public class AndTest {
        public static void main(String[] args) {
            int a=3&5;
            System.out.println("a="+a);
            
        }
    }
    

    结果a=1.

    |和||的区别

    |和||的区别同理,都可以作为逻辑或运算符;
    |还可以作为按位或的运算符,运算规则与按位与同理;
    ||同样有类似短路的功能,即第一个条件若为true,则不计算后面的表达式。

    相关文章

      网友评论

      本文标题:&、&&和|、||的区别

      本文链接:https://www.haomeiwen.com/subject/fnziyttx.html