相关疑难解决方法(0)

为什么"a ^ = b ^ = a ^ = b;" 与"a ^ = b; b ^ = a; a ^ = b;"不同?

我尝试使用XOR在不使用第三个变量的情况下在Java中交换两个整数的代码.

以下是我尝试的两个交换函数:

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);
    }

}
Run Code Online (Sandbox Code Playgroud)

此代码生成的输出如下:

After swap: 0,2984
After swap: 87593,2984
Run Code Online (Sandbox Code Playgroud)

我很想知道,为什么这句话:

        a^=b^=a^=b;
Run Code Online (Sandbox Code Playgroud)

与此不同?

        a^=b;
        b^=a;
        a^=b;
Run Code Online (Sandbox Code Playgroud)

java expression-evaluation compound-assignment

20
推荐指数
3
解决办法
5684
查看次数