不使用第三方变量的情况下交换两个数值
三种思路
1. 通过加减运算变换两个整数的值,利用两数之和减去另一个数的方式(此方法有局限性,如果两个数的数值过大,会超出范围造成数据丢失精度,数据发生变化)
public class Test { // 算术运算 public static void main(String[] args) { int a = 6, b = 10; // a = 10 a = b - a; // b = 20 b = b - a; // a = 30 a = a + b; System.out.println("算术运算:a=" + a + " b=" + b); } }
运行结果
算术运算:a=10 b=6
2. 通过位运算符异或(^)操作,利用任何数与0进行异或操作后的结果都为该数本身的特性
public class Test { // 异或运算(转为2进制计算,值相同为0,不同为1) public static void main(String[] args) { int a = 6; // a:0000 0110 int b = 10; //b:0000 1010 // a:0000 1100 12 a = a ^ b; // b:0000 0110 6 b = a ^ b; // a:0000 1010 10 a = a ^ b; System.out.println("异或运算:a=" + a + " b=" + b); } }
运行结果
异或运算:a=10 b=6
3. 用变量本身交换数值
public class Test { // 用变量本身交换数值 public static void main(String[] args) { int a = 6,b = 10; // 直接把b赋值给a 再用总和减a拿到b // b = (a+b) - (a=b); // a赋值给b加0 b赋值给a b = a + (a = b) * 0; System.out.println("变量本身交换数值:a=" + a + " b=" + b); } }
运行结果
变量本身交换数值:a=10 b=6