我一直以为&&
Java中的运算符用于验证其两个布尔操作数是否为true
,以及&
运算符用于对两个整数类型进行按位运算。
最近我才知道&
运算符也可用于验证其布尔操作数是否为true
,唯一的区别是即使 LHS 操作数为 false,它也会检查 RHS 操作数。
Is the &
Java中的运算符内部重载?或者这背后还有其他什么概念?
& &&
(x != 0) & (1/x > 1)
(x != 0)然后评估(1/x > 1)
然后执行&。问题是,对于 x=0 这将引发异常。
(x != 0) && (1/x > 1)
(x != 0)并且只有当这是真的时才评估(1/x > 1)
所以如果你有 x=0 那么这是完全安全的并且不会抛出任何异常如果 (x != 0) 评估为 false 整个事情直接评估为 false 而不评估(1/x > 1)
.
EDIT:
exprA | exprB
exprA然后评估exprB
然后做|
.
exprA || exprB
exprA并且仅当这是false
然后评估exprB
并做||
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)