不管什麼時候,都要保持足夠的警戒性。比你聰明的人都在努力,再不動起來,咱們就老了。歡迎你們掃描下方的二維碼關注個人微信公衆號,與我一塊兒學習Java。vue
上一節,咱們講了Java中的算術操做符、自增自減操做符以及關係操做符,並經過案例進行了相應的說明。請回答如下幾個問題:java
今天咱們繼續講解Java中操做符的相關知識,主要涉及兩塊的內容:微信
邏輯操做符負責鏈接多個關係表達式,其能根據參數的邏輯關係,生成一個boolean值。邏輯操做符有與(&&)
、或(||)
、非(!)
。「與」、「或」、「非」只能應用於boolean值,而不能將一個非布爾值看成布爾值在邏輯表達式中使用。markdown
&&
操做符表示全部的關係表達式都爲true時才爲true||
操做符表示只要有一個關係表達式爲true就爲true!
操做符表示取當前的相反量()
來肯定優先級public class LogicExp {
public static void main(String [] args) {
//&& 全部的關係表達式都爲true時才爲true
System.out.println(5>3&&5>4);
System.out.println(5>3&&5>6);
//|| 只要有一個關係表達式爲true就爲true
System.out.println(5>3||5>4);
System.out.println(5>3||5>6);
//! 取當前的相反量
System.out.println(5>3);
System.out.println(!(5>3));
//混合使用邏輯操做符()內的表達式優先進行運算
System.out.println((5>6&&5>3) || 5>4);
System.out.println(5>6 && (5>3||5>4));
}
}
//output
//true
//false
//true
//true
//true
//false
//true
//false
&&
、||
操做符每每還有短路的做用,短路的做用體如今:好比說&&
操做符,若是第一個表達式爲false,那麼它便不會去對第二個表達式進行運算
。||
操做符具備一樣的特性,若是第一個表達式爲true,那麼它便不會去對第二個表達式進行運算
。app
public class LogicExp {
public static void main(String [] args) {
System.out.println("&&短路操做:"+(test3()&&test1()));
System.out.println("====================================")
System.out.println("||短路操做:"+(test1()||test2()));
}
public static test1() {
System.out.println("5>3:"+(5>3));
return (5>3);
}
public static test2() {
System.out.println("5>4:"+(5>4));
return (5>4);
}
public static test3() {
System.out.println("5>6:"+(5>6));
return (5>6);
}
}
//output
//5>6:false
//&&短路操做:false
//====================================
//5>3:true
//||短路操做:true
所以在寫邏輯表達式的時候,把重要判斷的條件表達式放在前面優先判斷,能夠減小沒必要要的運算,從而得到潛在的性能提高。性能
除了Java中的八種基本數據類型外,還有一個比這些基本數據類型還小的單位bit(位)
,如1 byte = 8 bit
。按位操做符就是對這個二進制位進行操做。按位操做符會對兩個參數中對應的位執行布爾(boolean)代數運算(由於二進制位只可能爲0或者爲1),並生成一個boolean結果。學習
按位操做符主要分爲&(按位與)
、|(按位或)
、^(按位異或)
、~(非)
四種。ui
假設輸入值的二進制數是下列的輸入值1和輸入值2 輸入值1:00011010 輸入值2:00110011 => 比較後的結果是:00010010
假設輸入值的二進制數是下列的輸入值1和輸入值2 輸入值1:00011010 輸入值2:00110011 => 比較後的結果是:00111011
假設輸入值的二進制數是下列的輸入值1和輸入值2 輸入值1:00011010 輸入值2:00110011 => 比較後的結果是:00101001
假設輸入值的二進制數是下列的輸入值1 輸入值1:00011010 => 取反後的結果是:11100101
對於boolean值而言,因爲其做爲一種單bit值,按位操做符具備與邏輯操做符相同的效果,只是其沒有邏輯操做符的短路功能
。url
今天主要講解了邏輯操做符和按位操做符,對boolean類型而言,兩種操做符具備大體相同的邏輯判斷效果,可是也有必定的區別,這是咱們須要謹記的地方。spa
而在使用邏輯操做符時,必定要記得,把優先級高的、更頂層的關係表達式放在前面,這樣可以避免沒必要要的運算,從而必定程度上提升程序性能。
若是以爲我寫的內容對你有幫助,歡迎關注個人微信公衆號: