4.3 邏輯運算符
邏輯運算符是指進行邏輯運算的符號。邏輯運算主要包括與(and)、或(or)和非(not)三種,在程序中主要用來連接多個條件,從而形成更加復雜的條件。
邏輯運算符的運算結果是boolean類型。
參與邏輯運算的數據也必須是boolean類型。
關於邏輯運算符的種類和說明參看表4-3。
表4-3 邏輯運算符
符號 名稱 功能說明 && 邏輯與 兩個條件同時為true才為true,否則為false || 邏輯或 兩個條件有一個為true則為true,否則為false ! 邏輯非 只操作一個數據,對數據取反
邏輯運算符使用示例代碼:
boolean b1 = true;
boolean b2 = false;
boolean b3 = b1 && b2; //則b3的值是false
b3 = b1 || b2; //則b3的值是true
b3 = !b1; //則b3的值是false
在實際程序中,可以根據邏輯的需要使用對應的邏輯運算符號。實際使用示例:
l表示變量n是否屬於[0,10)區間
int n = 4;
boolean b = (n >=0) && (n < 10);
對於變量n來說,只要n同時滿足大於等於零,且小於10,則位於[0,10)區間,由於程序中無法書寫0<=n<10這樣的條件,則必須通過邏輯運算符進行連接。
l表示變量n不屬於[0,10)區間
一種寫法是:
int n = 4;
boolean b = !((n >= 0) && (n < 10));
這裡,對於屬於該區間的條件取反,則可以獲得不屬於該區間的條件。
另一種寫法是:
int n = 4;
boolean b = (n < 0) || (n >= 10);
這裡做了一個簡單的變通,如果變量n不屬於該區間,則在數學上只需要滿足n小於0或者n大於等於10的任何一個條件即可,這樣的或者關系在程序中實現時使用邏輯或實現。
在程序設計中,根據邏輯需要,使用對應的邏輯運算符,可以實現相對比較復雜的組合條件,從而實現對應程序的功能。
最後說一下&&和&的區別,其實在進行邏輯與運算時,既可以使用&&也可以使用&,在功能上本身沒有區別。兩者區別的位置在,對於&來說,如果左側條件為false,也會計算右側條件的值,而對於&&來說,如果左側的條件為false,則不計算右側的條件,這種現象被稱作短路現象。
示例代碼:
int n = -1;
boolean b1 = (n >= 0) && (n < 10);
boolean b2 = (n >= 0) & (n < 10);
則對於第二行代碼來說,兩個條件都將被計算,而對於第三行代碼來說,因為n >= 0這個條件不成立,則n < 10根本不會被執行。當然,兩者得到的最終結果是一樣的。
對於現在的代碼來說,區別不大,但是如果後續的條件是一個方法(方法的概念後續將介紹到),則將影響程序邏輯。
驗證&和&&功能的示例代碼如下:
public class Test{
public static void main(String[] args){
int n = 10;
boolean b = (n < 8) && ((n = 1) != 0);
int m = 20;
boolean b1 = (m < 8) & ((m = 1) != 0);
System.out.println(n);
System.out.println(m);
}
}
文章來源:http://blog.csdn.net/Mailbomb/archive/2008/05/22/2470337.aspx