“你好,阿米戈!我在解決邏輯問題時太過分了,沒注意到你進來了。這是給你的:如果鱷魚會飛,那麼雪就是白的。有一隻會飛的鱷魚。結論是什麼?”
“嗯……所以我們斷定雪是白色的?”
“太棒了!你通過了入門測試。你已經準備好掌握下一題了。它被稱為'邏輯運算符'。我們將從布爾邏輯開始。本能地,你已經知道了。畢竟你是一個機器人. 我們只需要調整您的設置以匹配 Java 語言。”
“布爾邏輯?我最近聽說了布爾類型……”
“是的,這裡有直接的聯繫。布爾表達式只能是真或假。碰巧,這種邏輯就是關於真或假的表達式,以及這些表達式的組合。例如,表達式 18 < 25 始終為真,7 < 5 始終為假。表達式 (i < 10) 取決於 i 的值。例如,如果表達式的計算結果為真,那麼我們可以要求程序執行某些操作。”
“啊,我明白了,布爾表達式不僅可以讓我們做出合乎邏輯的結論,還可以在程序中創建分叉。”
“完全正確。主要的事情是學習如何編寫它們。例如,在 Java 中,你不能直接去編寫表達式18 < age <65
。這在語法上是不正確的,程序將無法編譯。
“但是你可以這樣寫:
(18 < age) AND (age < 65)
當然,我們實際上並不使用 ENGLISH 單詞AND
。相反,您需要一個布爾運算符。也就是說,“AND”的表示方式不同。
“Java 中存在三種邏輯運算符:AND
(&&)、OR
(||)、NOT
(!)。
好消息是您可以使用括號來構造任何復雜的邏輯表達式。
壞消息是 Java 開發人員決定使用C 語言的表示法而不是and
,or
和not
。
看畫面:
邏輯運算符 | 期待 | 現實 |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
“其實還不錯……挺緊湊的,我都快背下來了。”
“好吧,那太棒了。下面是一些在 Java 中使用邏輯運算符的例子:
表達 | 解釋 | 解釋 |
---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
使用比較運算符和布爾變量的示例
“記住,阿米戈,只要你能寫邏輯表達式,你就可以寫邏輯變量。”
“怎麼樣?”
“我的意思是你可以用不同的方式編寫邏輯表達式。例如:
代碼 | 解釋 |
---|---|
|
如果 age 的值介於18 和之間65 ,則顯示短語“You can work”。 |
|
我們創建了一個isYoung 變量並將表達式的第一部分移入其中。我們只是age >= 18 用age < 18 . |
|
我們創建了一個 isOld 變量並將表達式的第二部分移入其中。此外,age <= 65 被替換為age > 65 . |
“這三個例子是等價的。只有在第二個例子中,我們才將表達式的一部分從語句if
移到一個單獨的布爾變量 ( isYoung
) 中。在第三個例子中,我們將表達式的第二部分移到第二個變量 ( isOld
) 中。順便說一句,布爾變量的默認值是false
。”
“我會記住的。我希望。”
邏輯運算
“現在讓我們簡要介紹一下邏輯操作。它們遵循非常簡單和合乎邏輯的(否則怎麼可能!)規則。
“首先,讓我們看看OR
運算符是如何工作的。它也稱為||
or disjunction。
表達 | 結果 |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
a || b
“你現在可以根據表格推斷出表達式的結果是什麼了嗎?”
“我懂了!” true
如果表達式中至少有一項是 ,則表達式的值為true
。如果兩者都是false
,那麼結果是false
。
“是啊。既然你這麼聰明,再看一下表格,想像一下false
0 和true
1。這樣看的話,||
運算符的行為是不是讓你想起了普通算術中的任何東西?”
“嗯……嗯,有點像加法……但是做加法的時候,1+1不等於1。”
“從某種意義上說,如果我們只處理 0 和 1,它是相等的。但現在不要為此煩惱。重要的是你注意到運算和加法之間的相似性。這意味著你不會||
”這個操作通常被稱為“邏輯加法”,這一點請不要感到驚訝。
“知道了。”
“現在AND
,又名&&
,又名合取運算符,登上舞台。
表達 | 結果 |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
true
“據我了解,只有當構成表達式的兩個值都是 時,表達式的結果才是true
。否則,它總是false
。”
“幹得好,阿米戈!你像海綿一樣吸收了所有這些。你看到與算術的另一個相似之處了嗎?”
“乘法!”
“完全正確。所以這裡我們有一個‘邏輯乘法’”。
“接下來我們看看NOT
運算符,也!
就是邏輯逆運算。
表達 | 結果 |
---|---|
!true |
false |
!false |
true |
“好吧,這裡的一切都很簡單。接線員更改true
為false
,反之亦然。”
“完全正確。這裡有一些對你有用的表達方式:”
表達 | 結果 |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION