Java 逻辑和关系运算符的初学者指南

运算符是用于对值、变量或语句执行操作的符号。它们执行这些操作的表达式称为操作数。这些操作为关系、相等和逻辑运算符返回一个布尔结果(真或假)。

运算符采用的操作数数量决定了它的类型。接受一个操作数的运算符称为“一元”。接受两个操作数的运算符称为“二进制”。

继续阅读以了解如何在 Java 中使用逻辑和关系运算符。更好的是,大多数编程语言使用相同的运算符,因此您可以将这些知识应用于其他地方。

逻辑运算符

它们用于在编程时构建逻辑语句。 Java 中有六个逻辑运算符。下表总结了它们。

操作员 名称 类型
| 布尔逻辑或 二进制
& 布尔逻辑与 二进制
^ 布尔逻辑异或 二进制
|| 条件或 二进制
&& 条件与 二进制
逻辑非 一元

如果要检查一个或两个条件是否为真,请使用此运算符。条件是一个可以为真或为假的表达式。

布尔逻辑包含 OR (|)

逻辑 OR 在评估表达式之前检查两个操作数是否为真。

 if ( dob < 2005 | height <= 5){
money++;
}

如果某人的出生日期 (dob) 小于 2005 年或如果他们的身高小于或等于 5 英尺,则上面的示例将给某人更多的钱。

布尔逻辑与 (&)

该运算符用于在程序中采用某个执行路径之前检查两个条件是否都为真。在评估整个表达式之前,它首先检查两个条件是否都为真。

相关:如何在 Python 中使用布尔方法验证字符串

布尔逻辑异或 (^)

如果要检查条件之一是否为真,但不是两者都为真,则这是要使用的运算符。下面的真值表总结了您在使用时会看到的结果。

表达式1 表达式2 表达式 1 ^ 表达式 2
错误的 错误的 错误的
错误的 真的 真的
真的 错误的 真的
真的 真的 错误的

布尔条件 AND (&&)

此运算符类似于逻辑 AND。不同之处在于它首先检查左边的条件是否为真,然后再检查右边的条件。

如果发现左侧部分为假,则立即停止执行。否则,将继续对正确部分进行评估。此功能称为短路评估。

请参阅下面的真值表以了解您对该运算符的理解。

表达式1 表达式2 表达式 1 && 表达式 2
错误的 错误的 错误的
错误的 真的 错误的
真的 错误的 错误的
真的 真的 真的

条件或 (||)

如果其中一个条件为假,则执行将跳到程序的下一部分。换句话说,这两个条件都必须为真。

此运算符类似于逻辑或。它还在执行某些代码之前检查其中一个或两个条件是否为真。

与条件 AND 类似,逻辑 OR 也使用短路评估。它首先检查左边的操作数是否为真,然后再评估右边的操作数。

相关: Java 中的构造函数是什么以及如何使用它?

如果发现左侧的条件为真,则无需检查右侧的条件。否则,将继续向右评估。

逻辑非 (!)

此运算符用于否定条件。它只是颠倒了它所操作的含义。

 if(!(x>5)){
// statements
}

上面的语句意味着如果“x 大于 5”不为真,则执行if 中的语句。

请注意在表达式 (x>5) 中使用圆括号。如果在编写程序时不包含这些括号,则会出现编译时错误。原因是因为是作用于条件的一元运算符。如果没有括号,编译器会将其解释为作用于 x 的运算符,而不是 x>5。

包含括号不仅仅是为了使编译器能够正确解释表达式。它们还可以用作程序员更好地理解更复杂表达式的一种方式。看下面的例子:

 age >= 7 && height < 5

有些人可能会发现很难遵循逻辑。因此,一些程序员出于可读性原因更喜欢添加冗余括号:

 (age >= 7) && (height < 5)

关系运算符

这些运算符用于比较操作数之间的简单关系。

操作员 名称
> 比…更棒
< 少于
>= 大于或等于
<= 小于或等于

关系运算符相当容易理解,因为它们都与您已经熟悉的常用代数运算符具有相同的含义。也就是说, ><的含义与上表给出的含义相同。

 if( x <= 7 ){
x++;
}

上面的if语句检查 x 是否小于或等于 7。如果为真,则括号内的语句执行,否则不执行。

现在是提及相等运算符的好时机。只有两个(等于,== 和 !=,不等于)。顾名思义,它们用于测试两个操作数之间的相等性。

相关:如何在 Java 中创建和对数组执行操作

不要将相等运算符 (==) 与赋值运算符 (=) 混淆。初学者程序员喜欢将两者混为一谈。这是合理的,因为在代数中符号 (=) 用于表示相等。但是,这在编程中是不对的。

赋值运算符 (=) 为变量赋值,而相等运算符 (==) 测试是否相等。请参阅下面的示例以了解差异:

 if(x=5){
// statements
}

无论 x 是否真的等于 5,上面的代码都会一直执行。同时,下面的代码只会在 x 等于 5 时才执行。因此,不要将两者混淆,这一点很重要。

 if(x==5){
// statements
}

提到的两个等式运算符具有相同的优先级,但低于关系运算符的优先级。

关系运算符也具有相同的优先级。这些运算符的执行从左到右开始。

Java 运算符的进一步考虑

您一定已经观察到,在某些示例中,某些运算符与其操作数之间存在空格,而在其他示例中则没有。

该空间的缺席/存在不应该让您担心。编译器会忽略它。因此,以下表达式的含义相同:

 Y>=7 // no whitespace
Y >= 7 // with whitespace

关系运算符通常用于表达简单的条件。要将简单条件组合成更复杂的条件,您必须使用逻辑运算符。逻辑运算符可以测试多个条件,不像关系运算符只测试一个条件。

同样重要的是要注意,当逻辑运算符(|、&、^)具有整数操作数时,它们可以是按位运算符。当用作按位运算符时,它们将对其操作数的位进行操作。

掌握了运算符的这些知识,您现在应该准备好学习 Java 类了。