Java 的 & 也可以當邏輯運算器

2978 단어 java
Java 中에서, 大家都知道 &可以做逐位元 (bit-wise) 的運算, 不過您可能不知道的是, 如果 &兩邊都是 boolean 예를 들어 Boolean的運算元, 那 &就會變成 邏輯運算器 , 예:

jshell> int a = 10
a ==> 10

jshell> a == 11 & a++ == 11
$2 ==> false


這個時候它的功能和 &&近似, 但是有一點 關鍵的差異 , 예 &兩邊的運算元都一定會執行, 然後才根據執行結果作邏輯運算.因此, 上述的例子中, 雖然左邊的運算元 a == 11 fasle , 已經可以確認邏輯運算的結果, 但是右邊的運算元 a++ == 11還是會運算, 如果檢查 a的值, 就會發現變 11 了:

jshell> a
a ==> 11


사용 &&運算器, 它會走捷徑, 只要左邊運算元的計算結果可以決定整個邏輯運算的結果, 就不會計算右邊的運算元, 例如:

jshell> int b = 10
b ==> 10

jshell> b == 11 && b++ == 11
$5 ==> false

jshell> b
b ==> 10


你會看到同樣的運算元, 但是改用 && b == 11會得到 false , 對 &&運算來說已經能夠確認結果一定是 false , b++ == 11根本就不會執行, 最後 b就仍然保留原值.

小結



本文的說明也同樣適用於 |運算器 運算器, av java 教學 都 沒有 提到 提到 這些 位元 位元 運算器 也 可以 可以 當成 邏輯 運算器 使用 使用, 雖然 並 不 不 建議 用 用 用 用, 不過 若 若 是 看到 別人 的 程式 程式 出現 這 種 用法 用法 就 不 會 覺得 覺得 覺得 奇怪 了.. 種 種

좋은 웹페이지 즐겨찾기