邏輯運算子中"&"與"&&"和"|"與"||"的區別
阿新 • • 發佈:2018-11-17
“&”和“&&”的區別:
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算;
class OperatorDemo { public static void main(String[] args) { int x = 3; int y = 4; /* &&和&的區別: A:最終結果一樣。 B:&&具有短路效果。左邊是false,右邊不執行。 */ //boolean b1 = ((++x == 3) & (y++ == 4)); //執行完後 x== 4 y == 5 boolean b1 = ((++x == 3) && (y++ == 4)); //執行完後 x== 4 y == 4 System.out.println("x:"+x); System.out.println("y:"+y); System.out.println(b1); } }
“|”和“||”的區別
單|時,左邊無論真假,右邊都進行運算;
雙|時,如果左邊為假,右邊參與運算,如果左邊為真,那麼右邊不參與運算;
class OperatorDemo { public static void main(String[] args) { int x = 3; int y = 4; /* ||和|的區別: A:最終結果一樣。 B:&&具有短路效果。左邊是true,右邊不執行。 */ //boolean b1 = ((++x == 4) | (y++ == 4)); //執行完後 x== 4 y == 5 boolean b1 = ((++x == 4) || (y++ == 4)); //執行完後 x== 4 y == 4 System.out.println("x:"+x); System.out.println("y:"+y); System.out.println(b1); } }