官术网_书友最值得收藏!

3.1.1 布爾類型及其運算

在編程語言的設計之初,它們除了可以進行數學計算外,還常常用于邏輯推理和條件判斷。為了實現邏輯判斷的功能,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把符號“^”放在兩個布爾變量之間,表示做“異或”運算。

下面是對布爾變量開展“非”“與”“或”“異或”等邏輯運算的代碼例子(完整代碼見本章源碼的src\com\control\logic\Bool.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);

上述的四則邏輯運算中,“與”“或”“異或”3種都需要兩個布爾變量才能判斷,這便意味著:倘若某個變量既參與邏輯運算,又能保存運算結果,此時的邏輯運算就轉變為對該變量的自我操作。譬如,對一個布爾變量與另一個布爾值進行“與”運算,且運算結果仍舊保存在該變量中,則可使用運算符“&=”簡化賦值操作。如同數值計算“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);
主站蜘蛛池模板: 溧水县| 余姚市| 泰和县| 太和县| 夏河县| 新泰市| 洞口县| 清涧县| 巩留县| 尚义县| 黎城县| 抚顺县| 涿鹿县| 平塘县| 合江县| 乐安县| 涡阳县| 辽源市| 邢台县| 房山区| 弋阳县| 怀仁县| 新闻| 精河县| 五华县| 凤阳县| 泽普县| 惠安县| 横山县| 卢湾区| 阳新县| 和顺县| 福鼎市| 洛隆县| 上栗县| 德钦县| 宜兰县| 涡阳县| 正阳县| 绥江县| 拜城县|