&&邏輯與 ||邏輯或 它們都是邏輯運(yùn)算符
& 按位與 ?。“次换颉 ∷鼈兌际俏贿\(yùn)算符
if (a == 1 && b == 2) // 這是說(shuō)既要滿足a=1也要滿足b=2
if (a == 1 || b == 2) // 這是說(shuō)或者滿足a=1或者要滿足b=2
&&邏輯與 也叫做短路與 因?yàn)橹灰?dāng)前項(xiàng)為假,它就不往后判斷了,直接認(rèn)為表達(dá)式為假
||邏輯或 也叫做短路或 因?yàn)橹灰?dāng)前項(xiàng)為真,它也不往后判斷了,直接認(rèn)為表達(dá)式為真
package com.ghw.test;
public class Derived {
public static void main(String[] args) {
String s = null;
int a = 1;
// System.out.println(s != null && a++ == 1); // &&有短路功能,a的值還是1 false 1
// System.out.println(a);
//
// System.out.println(s != null & a++ == 1); // &沒(méi)有短路功能,a的值是2 false 2
// System.out.println(a);
//
// System.out.println(s == null || a++ == 1); // ||有短路功能,a的值是1 true 1
// System.out.println(a);
//
// System.out.println(s == null | a++ == 1); // |沒(méi)有短路功能,a的值是2 true 2
// System.out.println(a);
System.out.println(s != null && s.equals(""));
}
}
&&還具有短路的功能,即如果第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式
例如,對(duì)于if(str != null && !str.equals(" "))表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會(huì)執(zhí)行,所以不會(huì)出現(xiàn)NullPointerException如果將&&改為&,則會(huì)拋出NullPointerException異常。If(x==33 & ++y>0) y會(huì)增長(zhǎng),If(x==33 && ++y>0)不會(huì)增長(zhǎng)
&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時(shí),&表示按位與操作,我們通常使用0x0f來(lái)與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來(lái)獲取該整數(shù)的最低4個(gè)bit位,例如,0x31 & 0x0f的結(jié)果為0x01。