逻辑短路 java_逻辑操作符中的短路现象
邏輯操作符的短路
短路:和我們物理中的短路現象是一樣的,在這里簡單來說就是某段邏輯代碼被跳過了,不執行了.
分析:&&(邏輯與)? 兩個同時為真時,結果才為真
||(邏輯或)? 有一個為真時,結果就為真
!(邏輯非)? 取反
邏輯與中的短路現象:
public static voidmain(String[] args) {//test1為真 test2為假 test3為真
boolean b = test1(0) && test2(3) && test3(1) ;
System.out.println("執行完畢,結果為:"+b);
}public static booleantest1(Integer i) {
System.out.println("執行test1");return i < 1;
}public static booleantest2(Integer i) {
System.out.println("執行test2");return i < 2;
}public static booleantest3(Integer i) {
System.out.println("執行test3");return i < 3;
}
執行結果為:
我們從執行結果中可以看出,test3并沒有執行到,這就是邏輯與中的短路現象。
分析:
例如:boolean類型的A,B,C
A && B && C
在這里就必須滿足ABC同時為真時才為真。因為代碼是從左到右執行的,當代碼執行到B時,發現B為false,那么整個表達式就一定為false,那么程序就沒有必要再去執行C了。
public static voidmain(String[] args) {int i = 0;boolean b = ++i > 0 && i++ > 1 && i++ > 0;
System.out.println("i為:"+i);
}
輸入結果為:
從結果中可以看到:最后的? i++ > 0 并沒有執行。
邏輯或中的短路現象:
public static voidmain(String[] args) {//test1為假 test2為真 test3為真
boolean b = test1(3) || test2(1) || test3(2) ;
System.out.println("執行完畢,結果為:"+b);
}public static booleantest1(Integer i) {
System.out.println("執行test1");return i < 1;
}public static booleantest2(Integer i) {
System.out.println("執行test2");return i < 2;
}public static booleantest3(Integer i) {
System.out.println("執行test3");return i < 3;
}
}
輸出結果為:
分析:
例如:boolean類型的A,B,C
A || B || C
在這里只需要ABC中有一個為真,就為真了。如果執行到A時,發現A為真,那么整個結果必然為真,就沒有必要再去執行B和C了。(邏輯與和邏輯或的思想是差不多的,當執行完某個表達式時,如果程序能夠推測出這整個表達式的結果,那么程序將不會繼續執行)
使用按位運算符就不會出現短路的現象:
public static voidmain(String[] args) {int i = 0;boolean b = ++i >0 & i++ >1 & i++ > 2;
System.out.println(b);
System.out.println(i);
}
輸入結果為:
事實上,如果所有的邏輯表達式都有一部分不比計算的話,那么程序將會獲得潛在的性能提高。
總結
以上是生活随笔為你收集整理的逻辑短路 java_逻辑操作符中的短路现象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nikeapp如何联系客服
- 下一篇: dnf像素勇士安图恩怎么打 地下城与勇士