### 逻辑运算符

返回类型为布尔值的表达式，比如比较运算符。可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。逻辑运算符包括&（&&）逻辑与、||（逻辑或）、!（逻辑非）。逻辑运算符的操作元必须是 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 运行结果