逻辑短路 java_逻辑操作符中的短路现象
邏輯操作符的短路
短路:和我們物理中的短路現(xiàn)象是一樣的,在這里簡(jiǎn)單來(lái)說(shuō)就是某段邏輯代碼被跳過(guò)了,不執(zhí)行了.
分析:&&(邏輯與)? 兩個(gè)同時(shí)為真時(shí),結(jié)果才為真
||(邏輯或)? 有一個(gè)為真時(shí),結(jié)果就為真
!(邏輯非)? 取反
邏輯與中的短路現(xiàn)象:
public static voidmain(String[] args) {//test1為真 test2為假 test3為真
boolean b = test1(0) && test2(3) && test3(1) ;
System.out.println("執(zhí)行完畢,結(jié)果為:"+b);
}public static booleantest1(Integer i) {
System.out.println("執(zhí)行test1");return i < 1;
}public static booleantest2(Integer i) {
System.out.println("執(zhí)行test2");return i < 2;
}public static booleantest3(Integer i) {
System.out.println("執(zhí)行test3");return i < 3;
}
執(zhí)行結(jié)果為:
我們從執(zhí)行結(jié)果中可以看出,test3并沒有執(zhí)行到,這就是邏輯與中的短路現(xiàn)象。
分析:
例如:boolean類型的A,B,C
A && B && C
在這里就必須滿足ABC同時(shí)為真時(shí)才為真。因?yàn)榇a是從左到右執(zhí)行的,當(dāng)代碼執(zhí)行到B時(shí),發(fā)現(xiàn)B為false,那么整個(gè)表達(dá)式就一定為false,那么程序就沒有必要再去執(zhí)行C了。
public static voidmain(String[] args) {int i = 0;boolean b = ++i > 0 && i++ > 1 && i++ > 0;
System.out.println("i為:"+i);
}
輸入結(jié)果為:
從結(jié)果中可以看到:最后的? i++ > 0 并沒有執(zhí)行。
邏輯或中的短路現(xiàn)象:
public static voidmain(String[] args) {//test1為假 test2為真 test3為真
boolean b = test1(3) || test2(1) || test3(2) ;
System.out.println("執(zhí)行完畢,結(jié)果為:"+b);
}public static booleantest1(Integer i) {
System.out.println("執(zhí)行test1");return i < 1;
}public static booleantest2(Integer i) {
System.out.println("執(zhí)行test2");return i < 2;
}public static booleantest3(Integer i) {
System.out.println("執(zhí)行test3");return i < 3;
}
}
輸出結(jié)果為:
分析:
例如:boolean類型的A,B,C
A || B || C
在這里只需要ABC中有一個(gè)為真,就為真了。如果執(zhí)行到A時(shí),發(fā)現(xiàn)A為真,那么整個(gè)結(jié)果必然為真,就沒有必要再去執(zhí)行B和C了。(邏輯與和邏輯或的思想是差不多的,當(dāng)執(zhí)行完某個(gè)表達(dá)式時(shí),如果程序能夠推測(cè)出這整個(gè)表達(dá)式的結(jié)果,那么程序?qū)⒉粫?huì)繼續(xù)執(zhí)行)
使用按位運(yùn)算符就不會(huì)出現(xiàn)短路的現(xiàn)象:
public static voidmain(String[] args) {int i = 0;boolean b = ++i >0 & i++ >1 & i++ > 2;
System.out.println(b);
System.out.println(i);
}
輸入結(jié)果為:
事實(shí)上,如果所有的邏輯表達(dá)式都有一部分不比計(jì)算的話,那么程序?qū)?huì)獲得潛在的性能提高。
總結(jié)
以上是生活随笔為你收集整理的逻辑短路 java_逻辑操作符中的短路现象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nikeapp如何联系客服
- 下一篇: react 显示当前时间_React获取