面试题 :实现两个整数变量的交换
本帖子总结了四种整数变量的交换方式:
方式一:开发中常用的,使用中间变量
方式二:不使用中间变量的,“和”实现
方式三:面试中使用的,按位亦或 “^”
-
*方式四:一句话实现交换
方式一:开发中常用的,使用中间变量
* 代码块 *
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"
}
}
方式三:面试中使用的,按位亦或 “^”
- “^”的特点:某一数据对另一个数据”^”两次,该数本身不变
- 面试题也可能描述为:请使用最高效的方法实现两个整数的值交换
* 代码块 *
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"
}
}