3 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
這些是按位和按位或運算符。
int a = 6; // 110
int b = 4; // 100
// Bitwise AND
int c = a & b;
// 110
// & 100
// -----
// 100
// Bitwise OR
int d = a | b;
// 110
// | 100
// -----
// 110
System.out.println(c); // 4
System.out.println(d); // 6
實際上,當兩個輸入都是布爾值時,運算符被認為是布爾邏輯運算符,并且行為類似于條件-和(&&)和有條件的-或(||)操作人員,除非他們沒有短路,所以在下列情況下是安全的:
if((a != null) && (a.something == 3)){
}
這不是:
if((a != null) & (a.something == 3)){
}
“短路”是指操作人員不一定檢查所有條件。在上面的例子中,&&只在下列情況下才會檢查第二個條件:a不是null(否則,整個語句將返回false,并且無論如何檢查以下條件都是沒有意義的),所以a.something不會引發(fā)異常,或被視為“安全”。
這個&運算符總是檢查子句中的每個條件,所以在上面的例子中,a.something可能會在a實際上是null值,引發(fā)異常。

TA貢獻1811條經(jīng)驗 獲得超5個贊
boolean a, b;Operation Meaning Note--------- ------- ---- a && b logical AND short-circuiting a || b logical OR short-circuiting a & b boolean logical AND not short-circuiting a | b boolean logical OR not short-circuiting a ^ b boolean logical exclusive OR !a logical NOTshort-circuiting (x != 0) && (1/x > 1) SAFE not short-circuiting (x != 0) & (1/x > 1) NOT SAFE
添加回答
舉報