您現在的位置是:首頁 > 棋牌

Java邏輯運算子詳解

  • 由 李興華java2python 發表于 棋牌
  • 2022-11-05
簡介println(numA

2的無窮大等於多少

Java邏輯運算子詳解

邏輯運算主要描述的就是

與、或、非

這樣的基本的關係,使用邏輯運算子的最重要的特點在於可以同時連線多個判斷條件,例如:在之前使用的關係運算符,每一次只能夠進行一個條件的判斷,這樣的操作一定不適合於更加複雜的程式邏輯。

Java邏輯運算子詳解

在給出的邏輯運算子之中非運算的理解可以說是最簡單的了,因為僅僅是進行了布林求反而已。

範例:

驗證“!”邏輯

public class YootkDemo {

public static void main(String args[]) {

int numA = 10 ;

int numB = 20 ;

System。out。println(! (numA > numB)) ;

System。out。println(numA != numB) ; // 不等於的符號也是一種非的邏輯

}

}

與邏輯是連線多個條件的處理運算子,將若干個判斷條件一起進行最終的計算,如果全部為true,最終的結果才是true,如果中間有一個條件為false(條件不滿足),那麼最終的結果就是false。

範例:

觀察與邏輯

public class YootkDemo {

public static void main(String args[]) {

int x = 1 ;

int y = 1 ;

System。out。println(x == y & 2 > 1) ; // 兩個判斷條件的運算連線在一起(true & true = true)

System。out。println(x == y & 2 < 1) ; // 兩個判斷條件的運算連線在一起(true & false = false)

}

}

與的概念雖然很好理解,但是在Java裡面卻針對於與邏輯操作提供有兩種不同的運算“&”、“&&”,那麼這兩種運算有什麼區別呢?

範例:

觀察普通與存在的問題

public class YootkDemo {

public static void main(String args[]) {

// 按照高等數學的邏輯來理解“數字 / 0 = 無窮大(計算機的設計來講無窮大意味著記憶體佔滿)”

System。out。println((1 > 2) & (10 / 0 == 0)) ; // false & 出錯的程式碼

}

}

這個時候的程式出錯實際上意味著所有的判斷條件都執行了,但是現在來分析一個問題:對於與操作的邏輯來講,最大的特點是若干個判斷條件如果有一個條件是false,那麼最終的與邏輯的結果就全部為false(中間出現多少個true都沒有意義了)。

true & true & false & true & true & true,由於中間出現有一個false,所以後面判斷就沒有任何意義了,這個判斷的結果肯定就是false,那麼如果現在使用的是“&”操作意味要全部判斷。

如果現在要想解決當前的程式邏輯判斷的效能問題,最佳的做法就是當進行若干個條件判斷的時候,如果出現有任何一次的false,那麼後續的判斷就全都停止了,這個就相當於是短路,而短路與的最終結果就是返回false。

範例:

使用短路與進行操作

public class YootkDemo {

public static void main(String args[]) {

// 第一個判斷條件“(1 > 2)”結果為false,後面的判斷沒有意義了直接停止判斷,返回false

System。out。println((1 > 2) && (10 / 0 == 0)) ;

}

}

或邏輯的最大的特點是進行若干個條件的判斷,如果有一個條件為true(滿足判斷條件),那麼最終的結果就是true(中間不管有多少個false,結果都是true),或邏輯也是分為兩種:普通或(|)、短路或(||)。

範例:

觀察普通或

範例:觀察普通或public class YootkDemo {

public static void main(String args[]) {

System。out。println((1 == 1) | (10 / 0 == 0)) ;

}

}

現在第一個判斷條件為true,但是由於使用的是普通或邏輯,所以後續的所有判斷條件都要執行,一旦執行後續的運算“10 / 0 == 0”程式就會出現異常。證明當前的所有的判斷條件全部都執行了。

範例:

使用短路或

public class YootkDemo {

public static void main(String args[]) {

System。out。println((1 == 1) || (10 / 0 == 0)) ;

}

}

在短路或的處理過程之中,如果中間出現有任何一個運算返回的結果為true,那麼後面的判斷就沒有任何意義了,也就不再執行後續的判斷語句,最終的結果就是true。

經過以上的分析之後實際上就可以得出一個重要的結論:在日後進行與邏輯、或邏輯的時候考慮到執行效能的問題,一定要使用短路與、短路或進行若干個判斷條件的連線。

Top