您的位置:首页 > 其它

(基础三)交换两个变量值的三种方法

2016-10-11 20:50 176 查看
//使用三种方法去交换两个变量的数值

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);
}
}


原创:http://blog.csdn.net/u013383042/article/details/52791607
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: