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