需求:两个数值交换
效率高低:按位异或(整数),求和(一般是整数),中间变量(常用 任意数据、简单)
一.中间变量
class WeiTest2{
public static void main(String[] args) {
//定义变量
int a=4;
int b=5;
System.out.println("a的值:"+a+","+"b的值:"+b);
//1.中间变量
int temp=a;
a=b;
b=temp;
System.out.println("a的值:"+a+","+"b的值:"+b);
二.按位异或
//2.按位异或
a=a^b;
b=a^b;//b=a^b^b=a
a=a^b;//a=a^b^a=b
System.out.println("a的值:"+a+","+"b的值:"+b);
三.求和
//3.求和
a=a+b;
b=a-b;//b=a+b-b=a
a=a-b;//a=a+b-a=b
System.out.println("a的值:"+a+","+"b的值:"+b);
运行结果如下:
按位异或扩展:
按位异或的扩展结论:当一个整数按位异或上另一个整数两次结果还是本身。
class WeiTest1{
public static void main(String[] args) {
int a=2;
int b=5;
System.out.println(a^b^a);//5
System.out.println(b^a^b);//2
}
}