Java中的运算符——逻辑运算符详解

Java中的运算符——逻辑运算符详解

逻辑运算符主要包括逻辑与( & ),逻辑或( | ),逻辑异或( ^ ),短路与( && ),短路或( || )。所有逻辑运算符的特点是操作数都是布尔类型,并且最终的运算结果也是布尔类型。逻辑运算符的基本运算规则如下表所示:

接下来我们来看一段代码,重点看看短路是如何发生的(注意看注释信息):

public class LogicalOperatorTest01 {

public static void main(String[] args) {

System.out.println(5 > 3 & 5 > 4); // true

System.out.println(5 > 100 | 5 > 4); // true

System.out.println(!(5 > 3)); // false

System.out.println(!(5 < 3)); // true

System.out.println(true & true); // true

System.out.println(true & false); // false

System.out.println(true | false); // true

System.out.println(!false); // true

System.out.println(!true); // false

System.out.println(true ^ false); // true

System.out.println(true ^ true); // false

System.out.println(false ^ false); // false

// 重点研究逻辑与(&)和短路与(&&)的区别

int x = 100;

int y = 98;

int z = 99;

System.out.println(x > y & x > z); //true

System.out.println(x > y && x > z); //true

/*

通过测试得出,逻辑与(&)和短路与(&&)最终运行

结果相同那么它们有什么区别呢?请看以下代码。

*/

int m = 99;

int n = 100;

System.out.println(m > n & m > n++); //false

/*

逻辑与(&)运算符只有当两边的操作数都是 true 的时候,

结果才是 true,只要有一个是 false,结果必然是 false。

以上程序逻辑左边的表达式(m > n)显然结果是 false,

通过左边的表达式已经可以得出结果是false 了,右边的

表达式没有执行的必要,那我们来看一下右边的表达式

有没有执行,只要输出 n 就可以了断定。

*/

System.out.println("n = " + n); //101

/*

以上程序的运行结果是 101,足以说明 n++已经执行了。

也说明了逻辑与运算符无论左边表达式结果是true 还

是 false,右边表达式一定会执行。

*/

//那我们来看一下短路与(&&)是怎样的?

int k = 99;

int f = 100;

System.out.println(k > f && k > f++); //false

System.out.println("f = " + f); //100

/*

通过以上测试得出 f++并没有执行,因为左边表达式(k > f)

为 false,右边的表达式就不再执行了,这种现象被称为短路

现象。也就是说对于短路与来说,左边的表达式只要为 false,

就会发生短路,右边表达式不再执行了。

*/

}

}

通过以上的测试,可以得出短路与(&&)在左边的表达式结果为 false 的时候,右边的表达式则不再执行,这种现象被称为短路现象,这种机制也显得短路与比较智能一些,效率更高一些,所以在实际开发中短路与(&&)的使用率要比逻辑与高一些。但这并不是绝对的,有的时候也可能会选择使用逻辑与( & ),这取决于你是否期望右边的表达式一定执行。

(本文仅代表个人观点,不喜勿喷!)

点击下方链接↓,获取更多知识:

Java中的运算符Java中的运算符——算数运算符详解Java中的运算符——关系运算符详解Java中的运算符——赋值运算符详解Java中的运算符——条件运算符详解Java中的运算符——字符串连接运算符

相关推荐

带你看看靳东住的豪宅,大门设计很奢华,户外环境跟景区没区别
美的空调维修收费标准表2021(如何了解维修费用)
365体育网址

美的空调维修收费标准表2021(如何了解维修费用)

📅 07-04 👁️ 8443
【白斩鹅的做法步骤图,白斩鹅怎么做好吃】籽玉sh
tst护肤品一套多少钱
365体育网址

tst护肤品一套多少钱

📅 07-21 👁️ 6726
UART通信协议及其工作原理(图文并茂+超详细)
windows照片查看器无法查看图片怎么办?原因及解决方法指南
9个提高代码运行效率的小技巧你知道几个?
365体育网址

9个提高代码运行效率的小技巧你知道几个?

📅 07-12 👁️ 8056
n和y重叠是什么牌子
365体育网址

n和y重叠是什么牌子

📅 07-30 👁️ 1225
使你成为科学家的原因是什么?
3658188

使你成为科学家的原因是什么?

📅 09-08 👁️ 4251