“你好,阿米戈!我在解决逻辑问题时太过分了,没注意到你进来了。这是给你的:如果鳄鱼会飞,那么雪就是白的。有一只会飞的鳄鱼。结论是什么?”

“嗯……所以我们断定雪是白色的?”

“太棒了!你通过了入门测试。你已经准备好掌握下一题了。它被称为'逻辑运算符'。我们将从布尔逻辑开始。本能地,你已经知道了。毕竟你是一个机器人. 我们只需要调整您的设置以匹配 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,ornot

看画面:

逻辑运算符 期待 现实
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))

使用比较运算符和布尔变量的示例

“记住,阿米戈,只要你能写逻辑表达式,你就可以写逻辑变量。”

“怎么样?”

“我的意思是你可以用不同的方式编写逻辑表达式。例如:

代码 解释
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
如果 age 的值介于18和之间65,则显示短语“You can work”。
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
我们创建了一个isYoung变量并将表达式的第一部分移入其中。我们只是age >= 18age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
我们创建了一个 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

“是啊。既然你这么聪明,再看一下表格,想象一下false0 和true1。这样看的话,||运算符的行为是不是让你想起了普通算术中的任何东西?”

“嗯……嗯,有点像加法……但是做加法的时候,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

“好吧,这里的一切都很简单。接线员更改truefalse,反之亦然。”

“完全正确。这里有一些对你有用的表达方式:”

表达 结果
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b