Java編程那些事兒23—邏輯運算子鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
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); }} 最後編輯:2008-5-26 修正&和&&的錯誤