- 長路與運算 &
- 短路與運算 &&
- 長路或運算 |
- 短路或運算 ||
長路與運算 &
運行如下程序:
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
對于長路與運算 &:
- 當運算符兩邊都是整數(shù)時抓韩,會進行逐位與運算(二進制邏輯運算)费彼;當兩邊是關(guān)系運算時救巷,是邏輯運算能曾。
2.長路與運算會將兩邊的關(guān)系運算結(jié)果都計算出來(不明白的話看到下面的短路與運算就知道了)。
短路與運算 &&
簡單修改上面的代碼運行如下程序:
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);
}
}
上面的代碼會在 int res1 = int1 && int2;
處報錯誊垢,報錯信息為‘&&’操作符不能被用于int剿配,int。顯然咽斧,短路運算符不支持按位邏輯運算堪置。
運行如下代碼
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);
}
}
運行結(jié)果為 false
短路與運算 && 與長路與運算 &的區(qū)別在于:
- 短路運算不支持按位運算。
- 如果左條件為false张惹,
&&
運算將不會再繼續(xù)計算右邊關(guā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);
}
}
運行結(jié)果為:
3
true
對于長路或運算 |:
當運算符兩邊都是整數(shù)時宛逗,會進行按位或運算(二進制邏輯運算)坎匿;當兩邊是關(guān)系運算時,是邏輯運算。
2.長路或運算會將兩邊的關(guān)系運算結(jié)果都計算出來碑诉,不管左邊的關(guān)系表達式是不是true彪腔。
短路或運算 ||
簡單修改上面的代碼運行如下程序:
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);
}
}
運行結(jié)果為 true
短路與運算 || 與長路與運算 | 的區(qū)別在于:
- 短路運算不支持按位運算。
- 如果左條件為True进栽, || 運算將不會再繼續(xù)計算右邊關(guān)系表達式德挣,這樣能提高程序的效率。
結(jié)論:
- 長路邏輯運算支持按位運算快毛,而短路運算不支持格嗅。
- 短路邏輯運算相較于長路邏輯運算,效率更高唠帝,因此進行邏輯運算時應(yīng)當使用短路邏輯運算符屯掖。