java短路邏輯運算符實例用法詳解
1、說明
邏輯操作符執(zhí)行短路求值。所謂短路,就是當一個參與運算的操作數(shù)足以推斷該表達式的值時,另一個操作數(shù)(可能是表達式)就不會執(zhí)行。
在使用邏輯操作符時,當兩個操作數(shù)都是true時,結(jié)果是true,但當?shù)谝粋€操作是false時,結(jié)果必須是false,此時不再判斷第二個操作。
2、實例
public static void main(String[] args) {
int a = 5;//定義一個變量;
boolean b = (a < 4) && (a++ < 10);
//使用短路邏輯運算符的結(jié)果為false
System.out.println("使用短路邏輯運算符的結(jié)果為" + b);
//a的結(jié)果為5
System.out.println("a的結(jié)果為" + a);
}
該程序使用短路邏輯邏輯運算符(&&),首先判斷a<4的結(jié)果是false,b的結(jié)果是false,因此不再執(zhí)行第二操作a++<10的判斷,因此a的值為5。
知識點擴展:
Java 提供了兩個在大多數(shù)其他計算機語言中沒有的有趣的布爾運算符。這就是邏輯AND和邏輯OR的特殊的短路版本。
在邏輯OR的運算中,如果第一個運算數(shù)A為真,則不管第二個運算數(shù)B是真是假,其運算結(jié)果為真。
同樣,在邏輯AND的運算中,如果第一個運算數(shù)A為假,則不管第二個運算數(shù)是真是假,其運算結(jié)果為假。
如果運用||和&&形式,而不是|和&,那么一個運算數(shù)就能決定表達式的值,Java的短路版本就不會對第二個運算數(shù)求值,只有在需要時才對第二個運算數(shù)求值。為完成正確的功能,當右邊的運算數(shù)取決于左邊的運算數(shù)是真或是假時,短路版本是很有用的。例如,下面的程序語句說明了短路邏輯運算符的優(yōu)點,用它來防止被0除的錯誤:
if (denom != 0 && num / denom > 10)
既然用了短路AND運算符,就不會有當denom為0時產(chǎn)生的意外運行時錯誤。如果該行代碼使用標準AND運算符(&),它將對兩個運算數(shù)都求值,當出現(xiàn)被0除的情況時,就會產(chǎn)生運行時錯誤。
既然短路運算符在布爾邏輯運算中有效,那么就在布爾邏輯運算中全用它,而標準的AND和OR運算符(只有一個字符)僅在位運算中使用。然而,這條規(guī)則也有例外。例如,考慮下面的語句:
if(c==1 & e++ < 100) d = 100;
到此這篇關于java短路邏輯運算符實例用法詳解的文章就介紹到這了,更多相關java短路邏輯運算符是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java application maven項目打自定義zip包實例(推薦)
下面小編就為大家?guī)硪黄猨ava application maven項目打自定義zip包實例(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息
在一次項目開發(fā)中,使用到了Netty網(wǎng)絡應用框架,以及MQTT進行消息數(shù)據(jù)的收發(fā),這其中需要后臺來將獲取到的消息主動推送給前端,所以本文記錄了SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息的操作,需要的朋友可以參考下2024-02-02
logback-spring.xml的配置及示例詳解(直接復制粘貼可用)
在使用logback作為日志框架時,可以創(chuàng)建一個名為logback-spring.xml的配置文件來自定義日志輸出的格式和方式,下面這篇文章主要給大家介紹了關于logback-spring.xml的配置及示例詳解的相關資料,文中的代碼直接復制粘貼可用,需要的朋友可以參考下2024-01-01
SpringBoot淺析緩存機制之Ehcache?2.x應用
EhCache?是一個純Java的進程內(nèi)緩存框架,具有快速、精干等特點。它是Hibernate中的默認緩存框架。Ehcache已經(jīng)發(fā)布了3.1版本。但是本文的講解基于2.x版本2022-08-08

