我一直以为&& Java中的运算符用于验证其布尔操作数是否为真,以及& operator用于对两个整数类型执行按位操作.
最近我才知道&运算符也可用于验证其布尔操作数是否都为真,唯一的区别是它检查RHS操作数,即使LHS操作数为假.
是& Java中的运算符内部重载?或者这背后有其他一些概念吗?
解决方法:
&安培; < - 验证两个操作数
&安培;&安培; < - 停止评估第一个操作数是否计算为false,因为结果将为false
(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).
编辑:
exprA | exprB< - 这意味着评估exprA然后评估exprB然后执行|.
exprA || exprB< - 这意味着评估exprA,并且只有当它为false时才评估exprB并执行||.