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个赋值运算符; […] = *= /= %= […]

为什么“a ^ = b ^ = a ^ = b;”不同于“a ^ = b; b ^ = A; 一个^ = B;”?

我尝试了一些代码来交换Java中的两个整数而不使用第三个变量,使用XOR。 以下是我尝试的两个交换函数: package lang.numeric; public class SwapVarsDemo { public static void main(String[] args) { int a = 2984; int b = 87593; swapDemo1(a,b); swapDemo2(a,b); } private static void swapDemo1(int a, int b) { a^=b^=a^=b; System.out.println(“After swap: “+a+”,”+b); } private static void swapDemo2(int a, int b) { a^=b; b^=a; a^=b; System.out.println(“After swap: “+a+”,”+b); } } 此代码生成的输出如下: […]