在編程語言的設計之初,它們除了可以進行數學計算,還常常用於邏輯推理和條件判斷。為了實現邏輯判斷的功能,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);