日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

逻辑短路 java_逻辑操作符中的短路现象

發(fā)布時(shí)間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑短路 java_逻辑操作符中的短路现象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

邏輯操作符的短路

短路:和我們物理中的短路現(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。