1. 程式人生 > >Java開發筆記(十二)布林變數論道與或非

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);