为了账号安全,请及时绑定邮箱和手机立即绑定

什么是短路?在Java中进行编程时如何使用短路?

什么是短路?在Java中进行编程时如何使用短路?

哔哔one 2019-10-31 13:13:01
什么是短路?在Java中进行编程时如何使用短路?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

短路评估意味着在评估布尔表达式(逻辑AND和OR)时,只要找到满足或否定该表达式的第一个条件,就可以立即停止。


例如,假设您正在评估OR带有多个子表达式的逻辑,每个子表达式的评估成本非常高:


if (costlyTest1() || costlyTest2() || costlyTest3()) { // ...

一旦找到返回的JVM,JVM就可以停止评估“ costlyTest”函数true,因为这将满足布尔表达式。因此,如果costlyTest1()返回true,则其他测试将被跳过。类似地:


if (costlyTest1() && costlyTest2() && costlyTest3()) { // ...

JVM一旦找到返回的函数就可以停止评估函数false,因为它也满足表达式。因此,如果costlyTest1()返回false,则不会调用其他函数。


这些规则与布尔表达式的任何嵌套级别有关,可以利用它们来避免不必要的工作,如上面的示例所示。


查看完整回答
反对 回复 2019-10-31
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

短路表达式的求值意味着在找到表达式的值之前,只需要对表达式的一部分进行求值。例如:


a == null || a.size() == 0

如果a为is null,a.size() == 0则不会对子表达式进行求值,因为布尔运算符的||求值true是其操作数之一是否为true。


同样,对于此表达式:


a != null && a.size() > 0

如果a为is null,a.size() > 0则将不对will进行求值,因为布尔运算符的&& 求值false是其操作数之一是否为false。


在上面的示例中,布尔运算符&&和||被称为短路,因为如果第一个操作数的值足以确定整个表达式的值,则第二个操作数可能不会被求值。为了进行比较,&和|操作数是等效的非短路布尔运算符。


查看完整回答
反对 回复 2019-10-31
  • 3 回答
  • 0 关注
  • 877 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信