面试题 :实现两个整数变量的交换

时间:2021-07-14 14:14:55

面试题 :实现两个整数变量的交换

本帖子总结了四种整数变量的交换方式:

  • 方式一:开发中常用的,使用中间变量

  • 方式二:不使用中间变量的,“和”实现

  • 方式三:面试中使用的,按位亦或 “^”

  • *方式四:一句话实现交换


方式一:开发中常用的,使用中间变量

* 代码块 *

 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"
}
}