短路邏輯運算符有兩種
一、&&:短路與
與邏輯運算符&與判定相同,即有假即假,唯一區別是:在短路與&&所連接的關系表達式中,如果左邊為假,則右邊不進行運算,直接輸出結果。
例:
int i = 10;
int j = 20;
System.out.println((i++>100) & (j++>100));//false & false
System.out.println("i:" + i);
System.out.println("j:" + j);
在邏輯與所連接的關系表達式中,最終會輸出false,i:11,j:21;
即左邊判斷i小於100以后為假,再執行i++操作得到i為11,右邊同理。
可以看到,在&邏輯與運算符下,左右兩邊的條件無論真假,都被執行了。
例:
int i = 10;
int j = 20;
System.out.println((i++>100) && (j++>100));//false && false
System.out.println("i:" + i);
System.out.println("j:" + j);
在短路邏輯與所連接的關系表達式中,最終會輸出false,i:11,j:20;
即左邊判斷i小於100以后為假,再執行i++操作得到i為11,此時由於是短路邏輯與運算符所連接的,因此左邊為假,則右邊不執行,所以j沒有執行j++的操作,導致最后輸出的j的結果是20.
二、||:短路或
與邏輯運算符|或判定相同,即有假即假,唯一區別是:在短路或||所連接的關系表達式中,如果左邊為真,則右邊不進行運算,直接輸出結果。
短路或同上短路與,可以看一下結論和上面的例子。