java中的&和&&的區(qū)別:1、&&運(yùn)算符在運(yùn)算時當(dāng)?shù)谝粋€表達(dá)式的值為false時,就不會再計(jì)算第二個表達(dá)式;而&運(yùn)算符則不管第一個表達(dá)式的值是否為真都會執(zhí)行兩個表達(dá)式。2、&運(yùn)算符可以用作位運(yùn)算符,而&&運(yùn)算符不可以。
本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
在Java中&&和&都是表示"與"的邏輯運(yùn)算符,也就是and的意思。它們都是當(dāng)兩邊的表達(dá)式都為true的時候,整個運(yùn)算結(jié)果才為true,否則為false。接下來在文章中將為大家具體介紹這兩者之間的區(qū)別。
&和&&的區(qū)別
&和&&都是邏輯運(yùn)算符,但&&又叫短路運(yùn)算符。因?yàn)楫?dāng)?shù)谝粋€表達(dá)式的值為false的時候,則不會再計(jì)算第二個表達(dá)式;
而&則不管第一個表達(dá)式是否為真都會執(zhí)行兩個表達(dá)式。另外&還可以用作位運(yùn)算符,當(dāng)&兩邊的表達(dá)式不是Boolean類型的時候,&表示按位操作。
&& 操作
int i = 0; if(i == 3 && ++i > 0 ) { } System.out.println("i = " + i);
結(jié)果是:
i = 0
原因:第二個表達(dá)式?jīng)]有執(zhí)行
& 操作
int i = 0; if(i == 3 & ++i > 0 ) { } System.out.println("i = " + i);
結(jié)果是:
i = 1
第二個表達(dá)式執(zhí)行了
擴(kuò)展知識:邏輯運(yùn)算符
邏輯運(yùn)算符把各個運(yùn)算的關(guān)系表達(dá)式連接起來組成一個復(fù)雜的邏輯表達(dá)式,以判斷程序中的表達(dá)式是否成立,判斷的結(jié)果是 true 或 false。
邏輯運(yùn)算符是對布爾型變量進(jìn)行運(yùn)算,其結(jié)果也是布爾型,具體如表 1 所示。
運(yùn)算符 | 用法 | 含義 | 說明 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|---|
&& | a&&b | 短路與 | ab 全為 true 時,計(jì)算結(jié)果為 true,否則為 false。 | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab 全為 false 時,計(jì)算結(jié)果為 false,否則為 true。 | 2<1||3>4 | false |
! | !a | 邏輯非 | a 為 true 時,值為 false,a 為 false 時,值為 true | !(2>4) | true |
| | a|b | 邏輯或 | ab 全為 false 時,計(jì)算結(jié)果為 false,否則為 true | 1>2|3>5 | false |
& | a&b | 邏輯與 | ab 全為 true 時,計(jì)算結(jié)果為 true,否則為 false | 1<2&3<5 | true |
-
|| 與 | 區(qū)別:如果 a 為 true,則不計(jì)算 b(因?yàn)椴徽?b 為何值,結(jié)果都為 true)
注意:短路與(&&)和短路或(||)能夠采用最優(yōu)化的計(jì)算方式,從而提高效率。在實(shí)際編程時,應(yīng)該優(yōu)先考慮使用短路與和短路或。
結(jié)果為 boolean 型的變量或表達(dá)式可以通過邏輯運(yùn)算符結(jié)合成為邏輯表達(dá)式。邏輯運(yùn)算符 &&、|| 和 !按表 2 進(jìn)行邏輯運(yùn)算。
a | b | a&&b | a||b | !a |
---|---|---|---|---|
true | true | true | true | false |
false | true | false | true | true |
true | false | false | true | false |
false | false | false | false | true |
邏輯運(yùn)算符的優(yōu)先級為:!運(yùn)算級別最高,&& 運(yùn)算高于 || 運(yùn)算。!運(yùn)算符的優(yōu)先級高于算術(shù)運(yùn)算符,而 && 和 || 運(yùn)算則低于關(guān)系運(yùn)算符。結(jié)合方向是:邏輯非(單目運(yùn)算符)具有右結(jié)合性,邏輯與和邏輯或(雙目運(yùn)算符)具有左結(jié)合性。
下面是一些使用邏輯運(yùn)算符的示例。
x>0 && x<=100 // 第一行語句 y%4==0 || y%3==0 // 第二行語句 !(x>y) // 第三行語句
其中,第一行語句用于判斷 x 的值是否大于 0 且小于或等于 100,只有兩個條件同時成立結(jié)果才為真(true)。第二行語句用于判斷 y 的值是否能被 4 或者 3 整除,只要有一個條件成立,結(jié)果就為真(true)。第三行語句先比較 x 和 y,再將比較結(jié)果取反,即如果 x 大于 y 成立,則結(jié)果為假(false),否則為真(true)。