- 好好學Java:從零基礎到項目實戰
- 歐陽燊
- 1178字
- 2022-07-27 19:14:55
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);
- Java應用開發與實踐
- Practical Windows Forensics
- 軟件架構:Python語言實現
- Learning Unreal Engine Android Game Development
- Java Web開發就該這樣學
- Nagios Core Administration Cookbook(Second Edition)
- Scala Functional Programming Patterns
- 測試架構師修煉之道:從測試工程師到測試架構師
- After Effects CC技術大全
- AutoCAD基礎教程
- Python人工智能項目實戰
- Magento 2 Developer's Guide
- Learning Scrapy
- 企業應用架構模式
- Apple Watch極速開發