首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java布尔语句SOS

Java布尔语句SOS
EN

Stack Overflow用户
提问于 2017-05-15 13:06:31
回答 3查看 175关注 0票数 1

为什么这个布尔语句是真的?

代码语言:javascript
复制
a= 10;
b = 0;
7 < a || a == b && b > 9 - a / b

因为任何除以0的东西都是错误的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-15 13:07:30

由于OR (||)运算符(a > 7)的第一个操作数计算为true,因此它短路,而其他操作数都不计算。因此,整个表达式的计算结果为true

票数 7
EN

Stack Overflow用户

发布于 2017-05-15 13:08:15

7 < a返回true。因为它是一个||之后,其余的没有被执行。

这是因为true || false是真的,true || true也是真的,所以计算第二个成员只是浪费时间。

票数 1
EN

Stack Overflow用户

发布于 2017-05-15 13:14:05

您的or -运算符||使用惰性计算或短路评估。这意味着,由于第一个表达式7 < a是真的,所以它不会计算任何其他语句,包括除数为零的语句,因为java已经找到了真语句。

如果你真的想得到一个错误,你可以使用这个或-操作符|,它应该强制所有语句的计算。大多数人只使用它作为一个位运算符,但它也是一个非短路版本的||.要想更深入地了解|||之间的关系,请看这里

例如,

代码语言:javascript
复制
boolean c = (7 < a | a == b && b > 9 - a / b);

将像预期的那样导致ArithmeticExcption。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43980370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档