首先我們需要知道java中邏輯運算符有哪些
第一部分: &(邏輯與),|(邏輯或),^(邏輯異或),!(邏輯非)
第二部分: &&(邏輯與 ,與&作用一致,但是運算形式不同),||(邏輯或,與|作用一致,但運算形式不同)
a. 邏輯運算符的基本用法
邏輯運算符一般用於連接boolean類型的表達式或者值。
語法: 布爾表達式 & 布爾表達式
布爾表達式 | 布爾表達式
布爾表達式 ^ 布爾表達式
!布爾表達式
布爾表達式 && 布爾表達式
布爾表達式 || 布爾表達式
b. 結論:
&邏輯與:有false則false。
|邏輯或:有true則true。
^邏輯異或:相同爲false,不同爲true。
!邏輯非:非false則true,非true則false。
特點:偶數個不改變本身。
第一部分:
&(邏輯與),|(邏輯或),^(邏輯異或),!(邏輯非)
案例:
class Demo1_Operator {
public static void main(String[] args) {
//&,|,^,!
int a = 10;
int b = 20;
int c = 30;
//邏輯與 遇false則false
/*System.out.println(a < b & b < c); //true & true = true
System.out.println(a < b & b > c); //true & false = false
System.out.println(a > b & b < c); //false & true = false
System.out.println(a > b & b > c); //false & false = false*/
//邏輯或 遇true則true
/*System.out.println(a < b | b < c); //true | true = true
System.out.println(a < b | b > c); //true | false = true
System.out.println(a > b | b < c); //false | true = true
System.out.println(a > b | b > c); //false | flase = false*/
//邏輯異或 ^ 兩邊相同爲false,兩邊不同爲true
/*System.out.println(a < b ^ b < c); //true ^true = false
System.out.println(a < b ^ b > c); //true ^false = true
System.out.println(a > b ^ b < c); //false ^ true = true
System.out.println(a > b ^ b > c); //false^flase = false*/
//邏輯非! 表達式結果爲true 返回false, 結果爲false 返回true
System.out.println(!true);
System.out.println(!!true);
}
}
第二部分:邏輯運算符&&和&的區別與||和|的區別
1.&&和&的區別?
a:最終結果一樣。
b:&&具有短路效果。左邊是false,右邊不執行。
&是無論左邊是false還是true,右邊都會執行。
2.||和|的區別?
a:最終結果一樣
b:||具有短路效果.左邊是true,右邊不執行
|是無論左邊是false還是true,右邊都會執行
3.開發中常用的邏輯運算符?
&&(相比較與&而言,由於短路效果,會減少運算的次數,提高效率),||(相比較於|而言,短路效果提高運算效率),!
案例:
class Demo2_Operator {
/*
&&與&的區別
* a:最終結果一樣。
* b:&&具有短路效果。左邊是false,右邊不執行。
||與|的區別
a:最終的結果是一樣
b:||具有短路效果,左邊爲true,右邊不執行
*/
public static void main(String[] args) {
int x = 3;
int y = 4;
//System.out.println((++x == 3) & (++y == 4)); //false & false = false
//System.out.println("x = " + x); //x = 4 ++在前先進行x的++運算,然後與3比較返回false
//System.out.println("y = " + y); //y = 5 ++在前先進行y的++運算,然後與4比較返回false
System.out.println("---------------------------");
System.out.println((++x == 3) && (++y == 4)); //false && (未知) = false
System.out.println("x = " + x); //x = 4 ++在前先進行x的++運算,然後與3比較返回false
System.out.println("y = " + y); //y = 4 由於前面的爲false,遇到&&短路與則後面的不進行運算
//故而++y的運算不會執行,最終返回的y爲初始值.
}
}