在 java 中,想要进行两个变量数值交换有三种方法。 第一种也是最常用的方法是利用第三方变量,临时储存数值。
class Test{
    public static void main(String[]args){
        int x = 5, y = 8;
        int temp = x;
        x = y;
        y = temp;
        System.out.println("x = "+x+", y = "+y);
    }
}
这种方式的好处是简单明了,代码功能一看就懂。 第二种方法是两个数求和然后相减的方式进行数据交换。
class Test{
    public static void main(String[]args){
        int x = 5, y = 8;
        x = x + y;
        y = x - y;
        x = x - y;
        System.out.println("x = "+x+", y = "+y);
    }
}
这种方法的弊端在于如果 x 和 y 的数值过大的话,超出 int 的值会损失精度。 第三种方法是利用位运算符异或运算的方式进行数据的交换
class Test{
    public static void main(String[]args){
        int x = 5, y = 8;
        x = x ^ y;
        y = x ^ y;
        x = x ^ y;
        System.out.println("x = "+x+", y = "+y);
    }
}
这种方法利用的思想原理是:一个数异或同一个数两次,结果还是那个数,而且不会超出 int 范围。 值得注意的是最后一种方法是直接对数值进行位运算,效率是最高的,但同时代码可读性较低。在实际运用中,还是常常采用第一种方法,低智商的人类还是决定选择牺牲机器的性能换来代码的高可读性。