馬上就找工作了,看筆試題突然看到這個,覺得比較有意思。
我想應該有很多人在編碼的過程中都遇到過,不管是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