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