- 長(zhǎng)路與運(yùn)算 &
- 短路與運(yùn)算 &&
- 長(zhǎng)路或運(yùn)算 |
- 短路或運(yùn)算 ||
長(zhǎng)路與運(yùn)算 &
運(yùn)行如下程序:
public class LogicCalculate {
public static void main(String[] args) {
int int1 = 1;
int int2 = 2;
int res1 = int1 & int2;
boolean res2 = int1>0 & int2<3 ;
System.out.println(res1);
System.out.println(res2);
}
}
返回結(jié)果為:
0
true
對(duì)于長(zhǎng)路與運(yùn)算 &:
- 當(dāng)運(yùn)算符兩邊都是整數(shù)時(shí),會(huì)進(jìn)行逐位與運(yùn)算(二進(jìn)制邏輯運(yùn)算);當(dāng)兩邊是關(guān)系運(yùn)算時(shí),是邏輯運(yùn)算。
2.長(zhǎng)路與運(yùn)算會(huì)將兩邊的關(guān)系運(yùn)算結(jié)果都計(jì)算出來(lái)(不明白的話看到下面的短路與運(yùn)算就知道了)。
短路與運(yùn)算 &&
簡(jiǎn)單修改上面的代碼運(yùn)行如下程序:
public class LogicCalculate {
public static void main(String[] args) {
int int1 = 1;
int int2 = 2;
int res1 = int1 && int2;
boolean res2 = int1>0 && int2<3 ;
System.out.println(res1);
System.out.println(res2);
}
}
上面的代碼會(huì)在 int res1 = int1 && int2;
處報(bào)錯(cuò),報(bào)錯(cuò)信息為‘&&’操作符不能被用于int,int。顯然,短路運(yùn)算符不支持按位邏輯運(yùn)算。
運(yùn)行如下代碼
public class LogicCalculate {
public static void main(String[] args) {
int int1 = 1;
int int2 = 2;
boolean res2 = int1<0 && int2<3 ;
System.out.println(res2);
}
}
運(yùn)行結(jié)果為 false
短路與運(yùn)算 && 與長(zhǎng)路與運(yùn)算 &的區(qū)別在于:
- 短路運(yùn)算不支持按位運(yùn)算。
- 如果左條件為false,
&&
運(yùn)算將不會(huì)再繼續(xù)計(jì)算右邊關(guān)系表達(dá)式,這樣能提高程序的效率。
長(zhǎng)路或運(yùn)算 |
運(yùn)行如下代碼:
public class LogicCalculate {
public static void main(String[] args) {
int int1 = 1;
int int2 = 2;
int res1 = int1 | int2;
boolean res2 = int1>0 | int2<1;
System.out.println(res1);
System.out.println(res2);
}
}
運(yùn)行結(jié)果為:
3
true
對(duì)于長(zhǎng)路或運(yùn)算 |:
當(dāng)運(yùn)算符兩邊都是整數(shù)時(shí),會(huì)進(jìn)行按位或運(yùn)算(二進(jìn)制邏輯運(yùn)算);當(dāng)兩邊是關(guān)系運(yùn)算時(shí),是邏輯運(yùn)算。
2.長(zhǎng)路或運(yùn)算會(huì)將兩邊的關(guān)系運(yùn)算結(jié)果都計(jì)算出來(lái),不管左邊的關(guān)系表達(dá)式是不是true。
短路或運(yùn)算 ||
簡(jiǎn)單修改上面的代碼運(yùn)行如下程序:
public class LogicCalculate {
public static void main(String[] args) {
int int1 = 1;
int int2 = 2;
boolean res1 = int1>0 || int2<1;
System.out.println(res1);
}
}
運(yùn)行結(jié)果為 true
短路與運(yùn)算 || 與長(zhǎng)路與運(yùn)算 | 的區(qū)別在于:
- 短路運(yùn)算不支持按位運(yùn)算。
- 如果左條件為T(mén)rue, || 運(yùn)算將不會(huì)再繼續(xù)計(jì)算右邊關(guān)系表達(dá)式,這樣能提高程序的效率。
結(jié)論:
- 長(zhǎng)路邏輯運(yùn)算支持按位運(yùn)算,而短路運(yùn)算不支持。
- 短路邏輯運(yùn)算相較于長(zhǎng)路邏輯運(yùn)算,效率更高,因此進(jìn)行邏輯運(yùn)算時(shí)應(yīng)當(dāng)使用短路邏輯運(yùn)算符。