13.邏輯運算子
邏輯運算子
什麼是邏輯運算子?連線比較運算子的符號稱之為邏輯運算子。那麼為什麼要連線比較運算子? 舉例:當你去公司應聘,招聘要求,男性(判斷為真),並且開發經驗1年(判斷為假)那麼,我們還適合去面試嗎,不能,因為只滿足了一項,總體是不滿足的(總體結果為假)。
邏輯運算子用於對boolean型結果的表示式進行運算,運算的結果都是boolean型。我們的比較運算子只能進行一次判斷,對於對此判斷無能為力,那麼邏輯運算子就可以經將較運算子連線起來。
邏輯運算子用於連線布林型表示式,在Java中不可以寫成3<x<6,應該寫成x>3 & x<6 。
“&”和“&&”的區別:單與時,左邊無論真假,右邊都進行運算;雙與時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算。
“|”和“||”的區別同理,雙或時,左邊為真右邊不參與運算。
“ ^ ”異或與“|”或的不同之處是:當左右都為true時,結果為false。
& 與 | 或 ^ 異或 ! 非
1、& 與
true & true = true ; false & true= false; true & false = false; false & false= false;
總結 & 符號特點
& : 只要兩邊的boolean 表示式結果,有一個false.那麼結果就是false
只有兩邊都為true ,將結果為true.
2、| 或
true | true =true; ture | false =true; false | true =true; false | false =flase;
總結 | : 兩邊只要有一個為真結果就為真,當兩邊同為假時結果才為假.
3、^ 異或
true ^ true =false; ture ^ false =true; false ^ true= true; false ^ false=flase;
: 兩邊相同結果是false
兩邊不同結果是true;
4、
!true = false !false= true
5、&& 短路
研究發現,&運算只有兩邊全為真的時候,結果才為真,那麼當左邊為假的時候就沒有必要在進行判斷,&&就產生了。
int a =4;
a >3 && a< 6;
a >3 & a< 6 ;
在這種情況下世沒有區別的
如果:
a =2
a >3 & a< 6 2大於 3 為假, 接著運算 2 小於6 為真,總的結果為假
a >3 && a< 6; 此時a 不大於3 結果為false 右邊不運算了.即短路.所以&& 比& 效率稍微高了一點.
public static void main(String[] args) { int x = 0; int y = 1; if (x == 0 && y == 1) { System.out.println(x + y); } }