Tag: 短路

为什么Java没有条件和条件运算符的复合赋值版本? (&& =,|| =)

因此对于布尔值的二元运算符,Java有& , | , ^ , &&和|| 。 让我们简要总结一下他们在这里简要介绍的内容: JLS 15.22.2布尔逻辑运算符&,^和| JLS 15.23条件和运算符&& JLS 15.24条件运算符|| 对于& ,如果两个操作数值都为true ,则结果值为true ; 否则,结果是false 。 对于| ,如果两个操作数值都为false ,则结果值为false ; 否则,结果是true 。 对于^ ,如果操作数值不同,则结果值为true ; 否则,结果是false 。 &&运算符类似于&但仅在其左侧操作数的值为true时才计算其右侧操作数。 || 运算符就像| ,但仅在其左侧操作数的值为false时才计算其右侧操作数。 现在,在所有5个中,有3个具有复合赋值版本,即|= , &=和^= 。 所以我的问题很明显:为什么Java不提供&&=和||= ? 我发现我需要的不仅仅是我需要的那些&=和|= 。 而且我不认为“因为它太长”是一个很好的答案,因为Java有>>>= 。 这种遗漏必须有更好的理由。 从15.26分配运营商 : 有12个赋值运算符; […] = *= /= %= […]

Java三元(即时)评估

我无法找到规范的相关部分来回答这个问题。 在Java中的条件运算符语句中,是否评估了true和false参数? 因此,以下内容可能会抛出NullPointerException Integer test = null; test != null ? test.intValue() : 0;