Java開發筆記(十二)布林變數論道與或非
在程式語言的設計之初,它們除了可以進行數學計算,還常常用於邏輯推理和條件判斷。為了實現邏輯判斷的功能,Java引入了一種布林型別boolean,用來表示“真”和“假”。該型別的變數只允許兩個取值,即true和false,其中true對應真值,而false對應假值。
如同數值變數擁有加減乘除四則運算那樣,布林變數也擁有邏輯方面的四則運算,包括“非”、“與”、“或”、“異或”,下面分別加以介紹。
1、“非”運算求的是某布林變數的對立值,若原變數值為true,則“非”運算的結果為false,若原變數值為false,則“非”運算的結果為true。Java把符號“!”加在布林變數前面,表示這裡進行“非”運算。
2、“與”運算求的是兩個布林變數的邏輯交集,只有兩個變數都為true時,運算結果才為true,其餘情況的運算結果都為false。Java把符號“&”放在兩個布林變數之間,這裡表示進行“與”運算。
3、“或”運算求的是兩個布林變數的邏輯並集,只要兩個變數有一個為true,運算結果就為true;只有兩個變數都為false時,運算結果才為false。Java把符號“|”放在兩個布林變數之間,表示這裡進行“或”運算。
4、“異或”運算求的是兩個布林變數的邏輯相異,當兩個變數同為true或者同為false時,運算結果為false;當兩個變數一個為true另一個為false時,運算結果為true。Java把符號“^”放在兩個布林變數之間,表示這裡進行“異或”運算。
下面是對布林變數進行“非”、“與”、“或”、“異或”等邏輯運算的程式碼例子:
// boolean表示布林型別,該型別的變數只允許兩個取值,即true和false boolean zhen = true; // true表示為真 System.out.println("zhen="+zhen); boolean jia = false; // false表示為假 System.out.println("jia="+jia); // “!”加在布林變數前面表示進行“非”運算 boolean not = !zhen; System.out.println("not="+not); // “&”放在兩個布林變數之間表示進行“與”運算 boolean and = zhen&jia; System.out.println("and="+and); // “|”放在兩個布林變數之間表示進行“或”運算 boolean or = zhen|jia; System.out.println("or="+or); // “^”放在兩個布林變數之間表示進行“異或”運算 boolean xor = zhen^jia; System.out.println("xor="+xor);
上述的四則邏輯運算當中,“與”、“或”、“異或”三種都需要兩個布林變數才能判斷,這意味著:倘若某個變數既參與邏輯運算,又能儲存運算結果,此時的邏輯運算就轉變為對該變數的自處理。譬如,對一個布林變數與另一個布林值進行“與”運算,且運算結果仍舊儲存在該變數中,則可使用運算子“&=”簡化賦值操作。如同數值計算“x = x+7”等價於“x += 7”那般,也存在布林計算“value = value&false”簡化成“value &= false”的情況。依此類推,對布林變數自身進行或運算,可利用新的賦值運算子“|=”;對布林變數自身進行異或運算,可利用新的賦值運算子“^=”。這些邏輯賦值符的詳細應用程式碼如下所示:
boolean value = true;
System.out.println("value="+value);
// 對布林變數進行“與”運算,且運算結果仍舊儲存在該變數中,則可使用運算子“&=”
value &= false; // 該行程式碼等同於 value = value&false;
System.out.println("value="+value);
// 對布林變數進行“或”運算,且運算結果仍舊儲存在該變數中,則可使用運算子“|=”
value |= true; // 該行程式碼等同於 value = value|true;
System.out.println("value="+value);
// 對布林變數進行“異或”運算,且運算結果仍舊儲存在該變數中,則可使用運算子“^=”
value ^= false; // 該行程式碼等同於 value = value^false;
System.out.println("value="+value);