天天看點

Java之邏輯運算符邏輯運算符

邏輯運算符

1. 介紹

  • 用于連接配接多個條件(多個關系表達式),最終的結果也是一個 boolean 值。

2. 邏輯運算符一覽

  • 分為兩組學習

1) 短路與 && , 短路或 ||,取反 !

2) 邏輯與 &,邏輯或 |,^ 邏輯異或

Java之邏輯運算符邏輯運算符
  • 說明邏輯運算規則:

1)

a&b

: & 叫邏輯與:規則:當 a 和 b 同時為 true ,則結果為 true, 否則為 false

2)

a&&b

: && 叫短路與:規則:當 a 和 b 同時為 true ,則結果為 true,否則為 false

3)

a|b

: | 叫邏輯或,規則:當 a 和 b ,有一個為 true ,則結果為 t

4)

a||b

: || 叫短路或,規則:當 a 和 b ,有一個為 true ,則結果為 true,否則為 false

5)

!a

: 叫取反,或者非運算。當 a 為 true, 則結果為 false, 當 a 為 false 是,結果為 true

6)

a^b

: 叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為

3. && 和 & 基本規則

名稱 文法 特點
短路與&& 條件1&&條件2 兩個條件都為 true,結果為 true,否則 false
邏輯與& 條件1&條件2

4. && 和 & 案例示範

  • 案例示範&& 和 & 運算符的使用(

    LogicOperator01.java

    )
//&&短路與  和 &邏輯與 案例示範
    int age = 50;
    if(age > 20 && age < 90) {
        System.out.println("ok100");
    }
    
    //&邏輯與使用
    if(age > 20 & age < 90) {
        System.out.println("ok200");
    }           
Java之邏輯運算符邏輯運算符
//差別
    int a = 4;
    int b = 9;
    //對于&&短路與而言,如果第一個條件為false ,後面的條件不再判斷
    if(a < 1 && ++b < 50) {
       System.out.println("ok300");
    }
    System.out.println("a=" + a + " b=" + b);// 4 9           
Java之邏輯運算符邏輯運算符
//對于&邏輯與而言,如果第一個條件為false ,後面的條件仍然會判斷
    if(a < 1 & ++b < 50) {
        System.out.println("ok300");
    }
    System.out.println("a=" + a + " b=" + b);// 4 10           
Java之邏輯運算符邏輯運算符

5. || 和 | 基本規則

短路或 ` ` 條件1` `條件2 兩個條件中隻要有一個成立,結果為true,否則為false
邏輯或 ` 隻要有一個條件成立,結果為true,否則為false

6. || 和 | 案例示範

  • 案例示範&& || 運算符的使用(LogicOperator02.java)。
//||短路或  和 |邏輯或 案例示範
     //|| 規則: 兩個條件中隻要有一個成立,結果為true,否則為false
     //| 規則: 兩個條件中隻要有一個成立,結果為true,否則為false
    int age = 50;
    if(age > 20 || age < 30) {
        System.out.println("ok100");
    }
    
    //邏輯或| 的使用
    if(age > 20 | age < 30) {
        System.out.println("ok200");
    }           
Java之邏輯運算符邏輯運算符
  • 邏輯或 | 和 短路或 || 差別:
//看看兩者的差別
    //(1) ||短路或:如果第一個條件為true,則第二個條件不會判斷,最終結果為true,效率高
    int a = 4;
    int b = 9;
    if( a > 1 || ++b > 4) { 
       System.out.println("ok300");
    }
    System.out.println("a=" + a + " b=" + b); //4 9           
Java之邏輯運算符邏輯運算符
//(2) |邏輯或:不管第一個條件是否為true,第二個條件都要判斷,效率低
    int a = 4;
    int b = 9;
    if( a > 1 || ++b > 4) { 
       System.out.println("ok300");
    }
    System.out.println("a=" + a + " b=" + b); //4 10           
Java之邏輯運算符邏輯運算符

7. || 和 | 使用差別

||

短路或:如果第一個條件為 true,則第二個條件不會判斷,最終結果為 true,效率高

|

邏輯或:不管第一個條件是否為 true,第二個條件都要判斷,效率低

3) 開發中,我們基本使用 ||

8. ! 取反 基本規則

! 非(取反) ! 條件 如果條件本身成立,結果為false,否則為true

9. ! 案例示範

  • 案例示範

    !

    ^

    案例示範運算符的使用(InverseOperator.java)
//! 操作是取反 T->F  , F -> T
    System.out.println(60 > 20); //T
    System.out.println(!(60 > 20)); //F
    
    //a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為true, 否則為false
    boolean b = (10 > 1) ^ ( 3 > 5);
    System.out.println("b=" + b);//T           
Java之邏輯運算符邏輯運算符

10. ^ 異或 案例示範

  • a^b

    :

    ^

    叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為 false
System.out.println( (4 < 1) ^ (6 > 3) ); // True           

11. 練習 1

  1. 分析:if條件中,x先比較後自增,是以

    x++==6

    false

    ,此時 x 自增後為 6。

    ++y

    是先自增再比較,此時 y = 6 ,比較的結果為 true。最後if條件的結果為

    false

int x = 5;
    int y = 5;
    if (x++==6 & ++y==6){
        x = 11;
    }
    System.out.println("x="+x+",y"+y);           
  • 是以最後結果為 x = 6,y = 6
Java之邏輯運算符邏輯運算符
  1. 分析:if條件中x先比較後自增,

    x++==6

    false

    ,x自增後為 6 。因為是短路與&&,是以後面的

    ++y==6

    不會再執行。最後if條件的結果為

    false

int x = 5,y = 5;
    if (x++==6 && ++y==6){
        x = 11;
    }
    System.out.println("x="+x+",y="+y);           
  • 是以最後結果 x = 6,y = 5
Java之邏輯運算符邏輯運算符
  1. 分析:if條件中

    x++==5

    中 x先比較再自增,是以

    x++==5

    true

    ,因為為 邏輯或

    |

    ,是以後面的判斷要執行。

    ++y==5

    中y先自增再比較,此時

    y = 6

    ,是以

    ++y==5

    結果為

    false

    。最後if條件的結果為

    true

    ,就要執行

    x = 11

int x = 5,y = 5;
    if (x++==5 | ++y==5){
        x = 11;
    }
    System.out.println("x="+x+",y="+y);           
  • 是以最後結果 x = 11,y = 6
Java之邏輯運算符邏輯運算符
  1. 分析:if條件中,

    x++==5

    中,x先比較再自增,此時

    x++==5

    的結果為

    true

    ,x 比較完成後自增為 6. 因為是短路或

    ||

    ,是以後面的判斷不會執行。最後if條件的結果為

    true

    x = 11

int x = 5,y = 5;
    if (x++==5 || ++y==5){
        x = 11;
    }
    System.out.println("x="+x+",y="+y);
    }           
  • 是以最後結果 x = 11,y = 5
Java之邏輯運算符邏輯運算符

11. 練習 2

  • 分析:
  1. 第一個if條件中, z為先判斷後自增,是以

    z++==46

    為 true,此時

    z = 47

    y = true

    是把 true 指派給 y,此時

    y = true

    y = true

    的判斷結果為

    true

    true

    ,就要執行 z++,此時

    z = 48

  2. 第二個if條件中,

    false

    指派為

    x

    ,此時

    x=false

    false

    ,因為短路或

    ||

    ,前面的條件為

    false

    ,是以後面的條件也要執行。

    ++z==49

    中,z先自增再判斷,是以

    x = 49

    true

    z++

    z = 50

boolean x = true;
    boolean y = false;
    short z = 46;
    if ((z++==46) && (y = true)) z++;
    if ((x=false) || (++z==49)) z++;
    System.out.println("z="+z);           
  • 是以最後結果 z = 50
Java之邏輯運算符邏輯運算符