Java之布爾運算


  對於布爾類型boolean,永遠只有true和false兩個值。

  布爾運算是一種關系運算,包括以下幾類

  • 比較運算符:>>=<<===!=
  • 與運算 &&
  • 或運算 ||
  • 非運算 !

  示例

boolean isGreater=5>3;//true
int age=12;
boolean isZero = age == 0; // false
boolean isNonZero = !isZero; // true
boolean isAdult = age >= 18; // false
boolean isTeenager = age >6 && age <18; // true

   關系運算符的優先級從高到低依次是

  • !
  • >>=<<=
  • ==!=
  • &&
  • ||

  短路運算

  布爾運算的一個重要特點是短路運算。如果一個布爾運算的表達式能提前確定結果,則后續的計算不再執行,直接返回結果。

  因為 false && x的結果總是false,無論x是true還是false,因此運算在確定第一個值為false后,不再繼續運算,而是直接返回false。

  示例

public class Main {
    public static void main(String[] args) {
    	boolean b=5<3;
    	boolean result = b && (5/0>0);
        System.out.println(result);
    }
}

   如果沒有短路運算,&&后面的表達式會由於除數為0而報錯,但實際上該語句並未報錯,原因在於與運算是短路運算符,提前計算出了結果false

  如果變量b的值為true,則表達式變為true && (5 / 0 > 0)。因為無法進行短路運算,該表達式必定會由於除數為0而報錯。

  類似的,對於||運算,只要能確定第一個值為true,后續計算也不再進行,而是直接返回true

boolean result = true || (5/0>0);//true

   三元運算符

  Java還提供一個三元運算符b ? x : y,它根據第一個布爾表達式的結果,分別返回后續兩個表達式之一的計算結果。示例:

public class Main {
    public static void main(String[] args) {
    	int n=-100;
    	int x=n>=0?n:-n;
    	System.out.println(x);
    }
}

   上述語句的意思是,判斷n>=0是否成立,如果為true,則返回n,否則返回-n。這實際上是一個求絕對值的表達式。

  注意到三元運算b ? x : y會首先計算b,如果btrue,則只計算x,否則,只計算y。此外,xy的類型必須相同,因為返回值不是boolean,而是xy之一。

  練習

  判斷指定年齡是否小學生(6~12歲)

public class Main {
    public static void main(String[] args) {
    	int age=7;
    	boolean isPrimaryStudent=age >=6 && age<=12;
    	System.out.println(isPrimaryStudent?"Yes":"No");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM