如何不用到第三个变量就能进行两个变量的值交换

如何不用到第三个变量就能进行两个变量的值交换

一般我们在写程序时会有进行两个变量交换的情况,我们一般采用的方法就是用一个临时变量协助交换,那么能不能不用临时变量就能进行交换呢?答案是可以的,这里给出两种方法。

1、巧妙运用两个变量的和

public class Test1 {
	public static void main(String[] args) {
		int a=2;
		int b=89;
		
		a=a+b;   //a=91;
		b=a-b;	 //91-89=2;
		a=a-b;	 //91-2=89;
        
		System.out.println("a的值 =   "+a); //a的值=89
		System.out.println("b的值=   "+b);  //b的值=2
	} 
}

2、利用异或

public class Test2{
	public static void main(String[] args) {
		int a=2;
		int b=5;
		//利用异或进行交换 一个数对另一个进行两次异或后值为本身;a^b^b==a
		a=a^b;  //a=7   等同于a^b,注释里的a,b值等于原始数据a,b的值
		b=a^b;  //b=2   等同于a^b^b
		a=a^b;	//a=5   这时的b等同于a,这里的a等同于a^b所以等同于a^a^b					
        System.out.println("a的值 =   "+a);//a的值等于5
		System.out.println("b的值=   "+b); //b的值等于2
	} 
}

异或的运算是将字符或数字转化成二进制的代码,然后进行运算。比如上面说的
int a = 2 , b = 5;
a =a^b; 这里 2的二进制是 0010, 5的二进制是 0101,结果是 0111,这个数是7。这里把7赋值给a。
b=a^b;这里 a=7,b还是5。在做异或运算 0111 和0101 运算的结果是0010,转换成十进制就是2。
a=a^b;这里 a=7,b=2. 在做异或 0111 和 0010 运算结果是0101,,转换成十进制就是5。异或运算就是这样

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值