本文总结了 4 种整数变量的交换方式,供给参考学习。
方式一:通用且易读,使用中间变量
public class SwapDemo{
public static void main(String[] args) {
int i = 10;
int j = 20;
int temp;
temp = i; //i = 10; j = 20; temp = 10;
i = j; //i = 20; j = 20; temp = 10;
j = temp; //i = 20; j = 10; temp = 10;
System.out.println("i=" + i + ";j=" + j);
// "i=20;j=10"
}
}
方式二:“求和”实现,仅针对数值型变量
注意:数据溢出问题。
public class SwapDemo{
public static void main(String[] args) {
int i = 10;
int j = 20;
i = i + j; //i = 30; j = 20;
j = i - j; //i = 30; j = 10;
i = i - j; //i = 20; j = 10;
System.out.println("i=" + i + ";j=" + j);
// "i=20;j=10"
}
}
方式三:按位亦或 “^”,面试常考
异或 ^:数值 N 连续异或数值 M 偶数次,结果仍为数值 N
面试题可能描述为:请使用最高效的方法实现两个整数的值交换
public class SwapDemo{
public static void main(String[] args) {
int i = 10;
int j = 20;
i = i ^ j;
j = i ^ j;
i = i ^ j;
System.out.println("i=" + i + ";j=" + j);
// "i=20;j=10"
}
}
*方式四:一句话实现交换
了解即可,装逼必会
public class SwapDemo{
public static void main(String[] args) {
int i = 10;
int j = 20;
j = ( i + j ) - ( i = j );
System.out.println("i=" + i + ";j=" + j);
// "i=20;j=10"
}
}