【变量互换】交换两个变量的 3 种方法

目录

前言

第三方变量

利用数学运算

(主要)异或位运算符方式


前言

我们在进行对数组进行排序时,需要进行对数据的位置转换,常见的写法就是对两个元素进行位置转换时都要定义第三者的变量进行存一个,这就会显得多余,所以,下面就是能不定义第三者变量进行数据的交换。

第三方变量

public class Main {
	
	public static void main(String[] args) throws Exception {
		
		// 定义两个变量
		int a = 10;
		int b = 20;
		
		// 定义第三者
		int t;
		
		// 转换
		t = a;
		a = b;
		b = t;
		System.out.println("a = " + a + ", " + "b = " + b);
		
	}
	
}
a = 20, b = 10

利用数学运算

注意: 用运算的方式可能会溢出,一般不会使用这种方法,仅供参考!

用数学运算的方式容易让变量溢出,而且需要运算所以加慢速度,所以这种方法不可靠

public class Main {
	
	public static void main(String[] args) throws Exception {
		
		// 定义两个变量
		int a = 10;
		int b = 20;
		
		// 转换
		a += b;
		b = a - b; // a的值赋值给b = 10
		a = a - b; // b的值赋值给a = 20
//		a -= b;
		
		System.out.println("a = " + a + ", " + "b = " + b);
		
	}
	
}
a = 20, b = 10

(主要)异或位运算符方式

异或位运算符:一个数异或一个数两次,得到原来的数。

示例

  • 5 ^ 6 = ?;
  • ? ^ 6 = 5;
  • ? ^ 5 = 6;
public class Main {
	
	public static void main(String[] args) throws Exception {
		
		// 定义两个变量
		int a = 10;
		int b = 20;
		
		// 转换
		a ^= b;    // 相当于a和b的原始值都赋值给a
		b = a ^ b; // 将a赋值给b = 10, 等价于 : a ^ b ^ b = a
		a = a ^ b; // 将b赋值给a = 20, 等价于 : a ^ b ^ a = b
		
		System.out.println("a = " + a + ", " + "b = " + b);
	}
	
}

输出:

a = 20, b = 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚妄狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值