啥叫"短路逻辑"

1 篇文章 0 订阅
1 篇文章 0 订阅

从Python中的理解:

if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为true,那么跳过b的判断,直接true

从Jave中认清逻辑操作符和短路逻辑操作符

一休:愚公,我又碰到问题了,请看下面一段代码:

double value=0;  
if(value!=0 && 1/value<1000)  
{   System.out.println("The value is not too small.");  
}  
else  
{   System.out.println("The value is too small.");  
}  


把这段代码放入main方法中,运行结果是:

The value is too small 

按道理说应该会出现除数为0的错误,为什么没有出现呢?

愚公:需要注意,这里的条件逻辑操作符”&&”是”短路”操作符,而”value!=0“条件不成立,即短路了,应执行else后的语句,所以不会再判断1/value<1000了。我再编写几条语句给你看看:

public static void main(String[] args)   
{   double int1=0,int2=1,int3=1;  
    if(int1!=0 & (int2=2)==1)  
    {   System.out.println("这里没有执行");  
    }  
    System.out.println("int2="+int2);  
    if(int1!=0 && (int3=2)==1)  
    {   System.out.println("这里没有执行");  
    }  
    System.out.println("int3="+int3);  
}  

读一下这段代码,看看运行结果是什么呢?

一休:还真的有点难读呢!

愚公:把你聪明的大脑当成计算机,一步步执行看看。

一休:哦,首先是一组赋值”int1=0,int2=1,int3=1;”,然后条件判断”value!=0“,现在int1等于0,于是碰到”&”号。

愚公:碰到”&”号要继续判断后面的表达式。

一休:然后执行int2=2,它的值就变成了2,再判断int2==1,两个条件都不满足,所以不执行”System.out.println("这里没有执行");“语句。

愚公:那么System.out.println("int2="+int2)输出什么呢?

一休:是”int2=2.0“。

愚公:再看看语句if(int1!=0 && (int3=2)==1)

一休:”int1!=0"不满足,那么”&&”后面的条件就不用考虑了。”(int3=2)”没有执行,所以,System.out.println("int3="+int3)输出"int3=1.0“。

愚公:对了。

一休:那”||”也是如此吧?

愚公:是的,现在总结一下。

逻辑操作符有:&(与运算)、^(异或运算)、|(或运算)。

短路逻辑操作符有:&&(并且)、||(或者)。

短路与(或)运算符和逻辑与(或)一样,都可以实现逻辑运算,但是有一个重要的区别:利用逻辑与(或)运算时,不管操作符两边的条件表达式成不成立,它都要进行运算判断,而短路与(或)运算就不一样了,如果通过左侧的操作数就可以进行它们需要的判断,那么它就不会再计算右侧的操作数了。

一休:这下我全明白了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值