2.3.4 逻辑运算符
逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔值。
逻辑非是唯一的单目运算符,只有一个操作数。
注意:
逻辑运算符&&、|| 进行的是短路运算:
- 逻辑与 &&,当左操作数为 false 时,结果必然是 false,就不会再去计算右操作数的值;
- 逻辑或 ||,当左操作数是 true 时,结果必然是 true,就不会再去计算右操作数的值。
例如:
int a=3;
boolean b=( (4<3) && ((a++)>5));
System.out.println(a);
输出结果是:
3
上面的表达式 ( (4<3) && ((a++)>5)) 中,逻辑与&& 左边的 (4<3) 结果是 false,这种情况下整个表达式的结果必定是 false,就不会再去计算逻辑与&& 右边的 ((a++)>5),这样就不会计算 a++,所以在下面输出a的值还是3。
另外:
有些教材上将 位运算符 &、|、^ 也算做逻辑运算符,其实并不合适,原因:
- 逻辑运算符的操作数必须是布尔型,位运算符的操作数可以是整数型或布尔型(其实是将布尔型转换成 0 和 1 再运算,本质还是位运算);
- 位运算符不存在短路运算,两边的操作数都会计算出来再进行位运算。