不使用第三方变量的情况下交换两个数值
三种思路
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
版权声明:本文为Mr_Gaojinchao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。