您現在的位置是:首頁 > 棋牌
Java邏輯運算子詳解
- 由 李興華java2python 發表于 棋牌
- 2022-11-05
2的無窮大等於多少
邏輯運算主要描述的就是
與、或、非
這樣的基本的關係,使用邏輯運算子的最重要的特點在於可以同時連線多個判斷條件,例如:在之前使用的關係運算符,每一次只能夠進行一個條件的判斷,這樣的操作一定不適合於更加複雜的程式邏輯。
在給出的邏輯運算子之中非運算的理解可以說是最簡單的了,因為僅僅是進行了布林求反而已。
範例:
驗證“!”邏輯
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。
經過以上的分析之後實際上就可以得出一個重要的結論:在日後進行與邏輯、或邏輯的時候考慮到執行效能的問題,一定要使用短路與、短路或進行若干個判斷條件的連線。