Java中&和&&的區別


馬上就找工作了,看筆試題突然看到這個,覺得比較有意思。

我想應該有很多人在編碼的過程中都遇到過,不管是Java也好,c也罷或者是C#,c++者等等......

 

貼一下我的demo

public class demo {
    public static void main(String[] args) {
        demo.d1("i", 1);
        demo.d2("i", 1);
        demo.d3("i", 1);
        demo.d4("i", 1);
    }
    
    public static void d1(String i,int k){
        if(i.equals("i")&1==k++){
            System.out.println("&全部為true  K="+k+",I="+i);
        }
    }

    public static void d2(String i,int k){
        if(i.equals("A")&1==k++){
        }
        System.out.println("&前者為false 后者為true  K="+k+",I="+i);
    }
    
    public static void d3(String i,int k){
        if(i.equals("i")&&1==k++){
            System.out.println("&&全部為true  K="+k+",I="+i);
        }
    }

    public static void d4(String i,int k){
        if(i.equals("A")&&1==k++){
        }
        System.out.println("&&前者為false 后者為true  K="+k+",I="+i);
    }
}

結果:

 

我們主要關注這兩句就可以了。

&前者為false 后者為true  K=2,I=i
&&前者為false 后者為true  K=1,I=i

不難看出,當我們使用&時前者為false 但是K的值為2,而當我們使用&&是前者為false,但是K的值為1.

說明當我們使用&的時候前者為false,但仍然執行了后面的K++,而我們是用&&的時候卻沒有。

故此我們得出結論:

  &不管前一個表達式得到的值是true還是false,都會執行后一個表達式。而使用&&的時候,但前一個表達式得值為true時,就不會繼續執行括號里面的表達式。

  對於:&  -- >  只要左右兩邊有一個為false,則為false;只有全部都為true的時候,結果為true

  對於:&& -- > 只要符號左邊為false,則結果為false;當左邊為true,同時右邊也為true,則結果為true


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM