[Java]邏輯運算子中「&」和「&&」以及「|」和「||」的差異

Boom
3 min readOct 17, 2021

--

<前言>

在程式中偶爾會看到&與|,還有&&與||這些邏輯運算符號

一樣都是且、或的意思,可是運算的優先順序也有些微差異

所以寫了這篇文章來記錄差別,判斷什麼時候用哪一個更好

下方是有關這四個邏輯運算子的說明:

<重點>

  • &與&&的運算
int a=1,b=2;

❓ ( a > b ) & ( b >1)

&運算子會優先運算前者 ( a > b ) 是 True 還是 False ,算完不管回傳值是True或是False,都會繼續判斷右邊的( b > 1 ) 是True 還是 False

❓ ( a > b ) && ( b >1)

&&運算子會優先運算前者 ( a > b ) 是 True 還是 False ,算完如果a>b的回傳值為False,就不會繼續判斷右邊的( b > 1 ) 是True 還是 False

  • |與||的運算
int a=1,b=2;

❓ ( a > b ) |( b >1)

| 運算子會優先判斷前者 ( a > b ) 是 True 還是 False ,判斷完不管回傳值是True或是False,都會繼續判斷右邊的( b > 1 ) 是True 還是 False

❓ ( a > b ) || ( b >1)

&&運算子會優先判斷前者 ( a > b ) 是 True 還是 False ,判斷完如果a>b的回傳值為True,就不會繼續判斷右邊的( b > 1 ) 是True 還是 False

為什麼『&&』,『||』回傳False或是True就不會繼續判斷右邊的式子?

( a > b ) && ( b >1)
  • &&(且)

如果在判斷完前面的式子發現是False

右邊就不會執行的原因為『且』的定義就是因為連接的條件式要同時為 True才會是 True

因此發現了前面的式子是False,右邊的就不需要算下去來浪費時間了

所以用這個的優點就是節省不必要的計算

( a > b ) || ( b >1)
  • ||(或)

如果在判斷完前面的式子發現是True

右邊就不會執行的原因為『或』的定義為只要有一個結果為 True,回傳值即為 True

因此發現了前面的式子是True,就可得知結果為True右邊的就不需要判斷

<總結>

🔥 如果以不浪費時間做判斷的話,建議使用『||』、『&&』這兩個邏輯運算子來coding

written by Boom / 2021.10.18

謝謝你的閱讀:)
如果你喜歡我的分享
歡迎底下留言或來信至boomengineerli@gmail.com 與我分享
期待與更多優秀的夥伴交流😄------------------------------------------------
如果願意給我一些小小鼓勵,請給我1-10個拍手
如果覺得文章對你有點幫助,請給我11-20個拍手
如果想看更多程式的相關文章,請長按拍手按鈕(50個拍爆)讓我知道唷👏最後,如希望持續追蹤我的最新文章,請不要忘記追蹤 Boom ⭐️ 程式自學之旅 謝謝~🙌

--

--

Boom
Boom

Written by Boom

Boom Engineer | BOOM ⭐ 程式自學之旅 | 透過筆記釋放記憶體,記錄自己的程式筆記,『內化』成為這段旅程的養分,也分享給路過,正在經歷這趟旅程的你 | Java note begin at 2020.09 | Python note begin at 2021.03

No responses yet