這個曾經讓我分不清的兩個東東,今天專門拿出來做一小結,以備日后查閱。并附Java四大運算符和比較運算符簡介。
1. 邏輯與(&)和邏輯或(|):
標準的邏輯與(&)和邏輯或(|),不論第一個表達式為true or false,都計算第二個表達式。
例如:if (c==0 | e++ < 100) { d=12;} //不論c是否等于0,e都被自增量。
2. 短路與(&&)和短路或(||)
A&&B, 當A為false時,不去計算B的值而直接返回false;當A為true時,計算B的值。
A || B,當A為true時, 不去計算B的值而直接返回true;當A為false時,計算B的值。
3.應用比較
短路&& 是很有用的。例如,下面的程序語句說明了短路邏輯運算符的優點,用它來防止被0除的錯誤:
if (denom != 0 && num / denom > 10)
既然用了短路與(&&) 運算符,就不會有當denom為0時產生的意外運行時錯誤。如果該行代碼使用標準與 運算符(&),它將對兩個運算數都求值,當出現被0除的情況時,就會產生運行時錯誤。
既然短路運算符在布爾邏輯運算中有效,那么就在布爾邏輯運算中全用它,而標準的AND 和OR運算符(只有一個字符)僅在位運算中使用。
4. Java四大運算符:算術運算符、位運算、關系運算、邏輯運算
另外還有比較運算符(instanceof)
A> 算術與位運算就不說了,一般不容易出錯
B> 關系運算符: == > < <= >= !=
關系運算的結果為boolean,只有true和false,不像C/C++中,非0為true,0為false。
boolean flag= a<c; //這種寫法是正確的.
例如: if(a == b) {} //如果是正確的,進行運算;
賦值運算符 = 是賦值的, 如: int a = 5; //不是 int a == 5;
C> 布爾邏輯運算符
布爾邏輯運算的運算數只能是布爾型,結果也為boolean型
邏輯與(&)和邏輯或(|) 及 短路與(&&)和短路或(||) 的區別見上。
<騎豬闖天下>