我明白&和&&运营商的语言不同。例如
if(condition1 && condition2)
如果condition1为true,将仅评估condition2,并且
if(condition1 & condition2)
无论条件1是否为真,都将评估condition1和condition2。我的问题是你何时应该使用&过度&& (和|和||分别),因为结果总是相同的。
答案 0 :(得分:1)
结果并不总是一样的。您可能会将condition1
和condition2
视为完全评估的变量或常量,但它们可能是具有副作用的函数调用,或者condition2
如果{{1}的值可能未定义是一种方式或另一种方式。 (这个典型的例子可能是
condition1
根据我的经验,我几乎从未遇到过需要进行非短路评估的情况,至少不是if (x != null && x.isCondition()) { x.doSomething(); }
条款。
答案 1 :(得分:0)
&安培;和|是按位运算符,这意味着它们采用左和右值并在它们之间执行AND或OR运算。
如果你正在做一个布尔逻辑,那么你想要&&和||为了节省一些时间。
你不想使用&或者在布尔逻辑上。
同样,如果您正在对位进行计算,那么使用&&和||没有意义