//使用三种方法去交换两个变量的数值
public class ExchangeTwoVariable {
public static void main(String[] args) {
//方法一(简单):
/* int a = 1,b = 2;
int temp;
System.out.println("交换前:a = " + a + " b = " + b);
temp = a;
a = b;
b = temp;
System.out.println("交换后:a = " + a + " b = " + b);*/
//方法二(简单):
/*int a = 3,b = 4;
System.out.println("交换前:a = " + a + " b = " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.println("交换后:a = " + a + " b = " + b);*/
//方法三:
//Tips:一个数异或同一个数两次,结果还是那个数。
int a = 5,b = 6;
System.out.println("交换前:a = " + a + " b = " + b);
a = a ^ b;//(1)经过运算,等式左边的a变成了一个中间数tmp(或者叫做临时数),此时b的数值没有发生变化,还是6。
//从第一步开始,a就是“一个数”,b就是“同一个数”。
b = a ^ b;//(2)因为一个数异或同一个数两次,结果还是那个数。此时a就是“一个数”,b就是“同一个数”。
//所以此时a^b就得到了原来的a,即5,但是我们的需求是要交换a,b的数值,
//所以将得到的运算结果赋值给b,从而达到交换数据的目的,所以此时等式左边的b等于5。
//从第二步开始,b就是“一个数”,a就是“同一个数”。
a = a ^ b;//(3)在第二步中,等式右边的b等于6。
//因为一个数异或同一个数两次,结果还是那个数,此时b就是“一个数”,a就是“同一个数”。
//这样通过两次异或,我们又可以得到6,从而将其赋值给a。
//所以在第三步中等式右边a^b就得到了原来的b,即6,,但是我们的需求是要交换a,b的数值,
//所以将得到的运算结果赋值给a,从而达到交换数据的目的,所以此时等式左边的a等于6。
System.out.println("交换后:a = " + a + " b = " + b);
}
}
(基础三)交换两个变量值的三种方法
最新推荐文章于 2021-06-22 12:44:41 发布