返回类型为布尔值的表达式,比如比较运算符。可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。逻辑运算符包括&(&&)逻辑与、||(逻辑或)、!(逻辑非)。逻辑运算符的操作元必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。表1给出逻辑运算符的用法和含义。
表1 逻辑运算符
运算符 |
含义 |
用法 |
结合方向 |
&&、& |
逻辑与 |
op1&&op2 |
左到右 |
|| |
逻辑或 |
op1||op2 |
左到右 |
! |
逻辑非 |
!op |
右到左 |
结果为boolean型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。
用逻辑运算符进行逻辑运算时,结果如表2所示。
表2 使用逻辑运算符进行逻辑运算
表达式1 |
表达式2 |
表达式1&&表达式2 |
表达式1||表达式2 |
!表达式1 |
true |
true |
true |
true |
false |
true |
false |
false |
true |
False |
false |
false |
false |
false |
True |
false |
true |
false |
true |
true |
逻辑运算符“&&”和“&”都是表示逻辑与,那么他们之间的区别在哪里呢?从表2可以看出当两个表达式都为true时,逻辑与的结果才会是true。使用逻辑运算符“&”会判断两个表达式。而逻辑运算符“&&”则是针对boolean类型类进行判断,当第一个表达式为false时,则不去判断第二个表达式,直接输出结果。使用“&&”可节省计算机判断的次数。通常将这种在逻辑表达式中从左端的表达式可推断出整个表达式的值称为“短路”。而那些始终执行逻辑运算符两边的表达式称为“非短路”。“&&”属于“短路”运算符,而“&”则属于“非短路”运算符。
例 在项目中创建类Calculation,在主方法中创建整型变量,使用逻辑运算符对变量进行运算,将运算结果输出。
public class Calculation { //创建类
public static void main(String[] args) {
int a = 2; //声明int型变量a
int b = 5; //声明int型变量b
boolean result = ((a > b) && (a != b)); //逻辑与&&运算
boolean result2 = ((a > b) || (a != b)); //逻辑或||运算
System.out.println("(2 > 5) && (2 != 5) = "+result); //变量result输出
System.out.println("(2 > 5) || (2 != 5) = "+result2); //变量result2输出
System.out.println("!(5 > 2) = " +!(5 > 2)); //逻辑非!运算
}
}
运行结果如图1所示。
图1 运行结果