JAVA 邏輯運算子的運算順序的誤解

2021-08-27 10:29:16 字數 920 閱讀 3490

先看下運算的**:

boolean test3=true||true&&false;

boolean test5=false&&true||true

system.out.println("test3="+test3);

system.out.println("test5="+test5);

是誰像我一樣把 test3 算成 false的?

結果:test3=true

test5=true

下面來解釋下:

大家都知道短路的說法吧。

1.邏輯與(&&),如果第乙個運算元為false,那麼結果肯定false,所以在這種情況下,將不會執行邏輯與後面的運算了,即發生了短路。

2.邏輯或(||),如果第乙個運算元為ture,那麼結果肯定是ture,所以在這種情況下,將不會執行邏輯與後面的運算了,即發生了短路。

[color=red]關於短路注意:[/color]

一旦能夠明確無誤地確定整個表示式的值,就不會再計算表示式剩餘的部分了。注意一定要是明確無誤地確定整個表示式的值才會短路。

像上面的情況:既有&&又有||這個時候就不會短路,而是按照優先順序進行運算。&&是先於||所以&&的先運算,而區域性運算也會走短路邏輯。

例如:boolean test2=false&&5/0>0||false;(結果為:test2=false)

5除以0 ,明顯被除數為0會報錯,而此時執行確沒有報錯,就是因為邏輯與短路。

而反過來

boolean test2=true&&5/0>0||false;

就會報被除數為0錯誤。

[color=red]總結:[/color]

邏輯運算子運算是,如果明確無誤地確定整個表示式的值,就會走「短路」邏輯,而如果比較複雜的話就會按照優先順序進行運算,而區域性運算也會用到短路邏輯。

運算子優先順序參考:

java邏輯運算子

什麼是邏輯運算子?就是讓我們的條件多組合在一起,一次組合多個條件,然後再運算最後的邏輯值是否滿 足要求,說白了邏輯運算子就是多個選擇或者多個要求。邏輯運算子有 與 或 非 與 的意思就是同時的意思,必須要求兩邊都為true才為true如 10 12 100 100 問一下那邊 和這邊是不是為真如果都...

Java邏輯運算子

假設布林變數a為真,變數b為假 稱為邏輯與運算子。當且僅當兩個運算元都為真,條件才為真。a b 為假。稱為邏輯或操作符。如果任何兩個運算元任何乙個為真,條件為真。a b 為真 稱為邏輯非運算子。用來反轉運算元的邏輯狀態。如果條件為true,則邏輯非運算子將得到false。a b 為真。當使用與邏輯運...

Java邏輯運算子

邏輯運算子把各個運算的關係表示式連線起來組成乙個複雜的邏輯表示式,以判斷程式中的表示式是否成立,判斷的結果是 true 或 false。邏輯運算子包括 其中 和 是雙目運算子,實現邏輯與 邏輯或 是單目運算子,實現邏輯非。表 1 給出了邏輯運算子的用法 含義及例項。表1 邏輯運算子的用法 含義及例項...