“你好,阿米戈!我在解决逻辑问题时太过分了,没注意到你进来了。这是给你的:如果鳄鱼会飞,那么雪就是白的。有一只会飞的鳄鱼。结论是什么?”
“嗯……所以我们断定雪是白色的?”
“太棒了!你通过了入门测试。你已经准备好掌握下一题了。它被称为'逻辑运算符'。我们将从布尔逻辑开始。本能地,你已经知道了。毕竟你是一个机器人. 我们只需要调整您的设置以匹配 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