邏輯運算子

2021-09-05 08:55:31 字數 1110 閱讀 7705

以以下**為例子:

public class test    //短路運算子,若第乙個條件為假,後面的就不執行了

system.out.println("a." + n);      //n=5

m = n = 5;

if((m != 5) & (n++ == 6)){}      //非短路運算子,不管第乙個表示式是什麼,都要執行後面的

system.out.println("b." + n);   //n=6

m = n = 5;

if((m == 5) || (n++ == 5)){}    //短路運算子,若第乙個表示式為真,後面的就不執行了

system.out.println("c." + n);    //n=5

m = n = 5;

if((m == 5) | (n++ == 6)){}    //非短路運算子,不管第乙個條件是什麼,都要執行後面的

system.out.println("d." + n);   //n=6

int a = 1, b = 2;

int c = a & b;             //先轉為二進位制,再進行&操作,即:0001&0010  結果為0000,即0

system.out.println("a&b:" + c);}}

解析:「&、|、^」這三個是什麼運算子?都會回答「位運算子」,但這樣的回答並不完整,其實它還可以充當布林邏輯運算子(前提是兩邊的資料型別是布林型別)

在位運算中,int c  = a & b 它的意思是首先使a和b按位與,a是1,b是2,a的二進位制是0001,b的二進位制是0010,與的結果如下:

a       0     0     0    1

b       0     0     1    0

a&b   0     0     0    0

「&、|」與「&&、||」邏輯運算的重要區別是:前者是非短路運算,後者是短路運算,編譯器對於&&與||已經優化過,若&&前面的是false,&&後面的表示式就不用再做了,||前面的是true,||後面的就不用再做了,這就是所謂的「短路」,而布林邏輯運算子就沒有這個特點,無論元素符「&、|」前面的是true還是false,運算子後面的表示式都得進行運算,這就是所謂的「非短路」。

邏輯運算子( , )

操作!是的 運算子不執行布林操作,有只有乙個運算元,位於其權利,和唯一,它確實是逆是它的價值,生產假如果真實,真實的,如果其運算元其運算元為false。基本上,它返回布林值,評價其運算元相反。例如 1 2 3 4 5 5 evaluates to false because the expressi...

邏輯運算子

邏輯運算子 符號 作用 符號 作用 或and 與 或 not 非 或or 或 xor 異或 與 運算 1 或者 and 是 與 運算的兩種表達方式。如果所有資料不為0且不為空值 null 則結果返回1 如果存在任何乙個資料為0,則結果返回0 如果存在乙個資料null且沒有資料為0,結果返回null。...

邏輯運算子

邏輯與 當兩個運算元的值都為true時,運算結果為true 邏輯或 只要兩個運算元中有乙個值為true時,運算結果就為true 邏輯非 對運算元取反,即true值非運算的結果false,false值非運算的結果為true 案例 test1 var a 1,b 0,c hello a b c worl...