一、Java邏輯運算的種類
1、概述
- 邏輯運算是在關系運算基礎之上的運算,能處理更加復雜的問題。
- 邏輯運算的結果是true或false。
2、邏輯運算的種類
運算種類 | 運算符號 | 運算表達式 |
---|---|---|
與運算(長路運算) | & | 關系運算1 & 關系運算2 |
與運算(短路運算) | && | 關系運算1 && 關系運算2 |
或運算(長路運算) | 丨 | 關系運算1 丨關系運算2 |
或運算(短路運算) | 丨丨 | 關系運算1 丨丨關系運算2 |
非運算 | ! | !(關系運算) |
二、Java邏輯長路短路"與"運算
1、概述
與運算的特點:當兩個關系運算的結果都是true時,運算的結果是true,否則是false。
關系運算1 | 關系運算2 | 與運算結果 |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
2、長路與運算
- 長路與運算的運算符號:&
- &在兩邊都是整數時,是逐位與運算;在兩邊是關系運算時,是邏輯運算。
- 長路與運算會把兩邊的關系運算結果都計算出來。
示例:4<3 & 5*3>12
步驟1、計算4<3,結果是false。
步驟2、計算5*3>12,結果是true。
步驟3、false & true,結果是false。
3、短路與運算
- 短路與運算的運算符號:&&
- 短路與運算的特點:當運算符左邊的關系運算結果是false時,不再對右邊的關系運算進行計算。
示例:4<3 & 5*3>12
步驟1、計算4<3,結果是false。
步驟2、false && 5*3>12,結果是false。
三、Java邏輯長路短路"或"運算
1、概述
或運算的特點:當兩個關系運算的結果有一個是true時,運算的結果是true,否則是false。
關系運算1 | 關系運算2 | 與運算結果 |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
2、長路或運算
- 長路或運算的運算符號:|
- 長路或運算在兩邊都是整數時,是逐位或運算;在兩邊是關系運算時,是邏輯運算。
- 長路或運算會把兩邊的關系運算結果都計算出來。
示例: 5*3>12 | 4<3
步驟1、計算5*3>12,結果是true。
步驟2、計算4<3,結果是false。
步驟3、計算true | false,邏輯運算結果是true。
3、短路或運算
- 短路或運算的運算符號:||
- 短路或運算的特點:當運算符左邊的關系運算結果是true時,不再對右邊的關系運算進行計算,直接得出true的結果。
示例: 5*3>12 || 4<3
步驟1、計算5*3>12,結果是true。
步驟2、計算true || 4<3,結果是true。
四、Java邏輯"非"運算
1、概述
關系運算 | 非運算結果 |
---|---|
false | true |
true | false |
2、示例
示例:!(5*3>12) 單目運算
步驟1、計算5*3>12,結果是true;
步驟2、!true,邏輯運算結果是false。
五、Java邏輯運算優先級
三種邏輯運算的優先級:
非運算最高
其次是與運算
優先級最低的是或運算
示例:5>=7 || 4<5 && !false
步驟1、計算關系運算:5>=7,結果:false;
步驟2、計算關系運算: 4<5,結果:true;
步驟3、計算邏輯非運算:!false,結果:true;
現在變成計算false || true && true的值,由于與運算高于或運算,所以先計算與運算
步驟4、計算邏輯運算:true && true,結果:true;
步驟5、計算邏輯或運算:false || true,結果:true。
六、Java邏輯運算案例
【示例-1】鍵盤輸入一個5分制分數,用與運算運算并顯示該數是否為5分制分數。
代碼
public class Test19 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("輸入5分制分數:");
int score=scanner.nextInt();
boolean isFiveScore=score>=0 && score<=5;
System.out.println(score+"是5分制的分數:"+isFiveScore);
}
}
結果一:
輸入5分制分數:
5
5是5分制的分數:true
結果二:
輸入5分制分數:
6
6是5分制的分數:false
【示例-2】鍵盤輸入一個5分制分數,用或運算運算并顯示該數是否為5分制分數。
代碼
public class Test20 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("輸入5分制分數:");
int score=scanner.nextInt();
boolean isnotFiveScore=score<0 || score>5;
System.out.println(score+"不是5分制的分數:"+isnotFiveScore);
}
}
結果一:
輸入5分制分數:
5
5不是5分制的分數:false
結果二:
輸入5分制分數:
6
6不是5分制的分數:true
【示例-3】鍵盤輸入一個5分制分數,用非運算計算并顯示該數是否為5分制分數。
代碼
public class Test21 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("輸入5分制分數:");
int score=scanner.nextInt();
boolean isFiveScore=!(score<0 || score>5);
System.out.println(score+"是5分制的分數:"+isFiveScore);
}
}
結果一:
輸入5分制分數:
4
4是5分制的分數:true
結果二:
輸入5分制分數:
7
7是5分制的分數:false