在编程中经常要进行数据交换我们数据交换最常用内容如下:

int x = 10;
int y = 5;
int temp = 0;
temp = x;
x = y;
y = temp;

上述方式的优点就是简单易懂,如果面试考官让你不加入第三方变量,完成值交换,你能不能搞定呢,答案是肯定的,可以搞定,看如下介绍:


方案一:采用加减交换,该方式对int类型的最大值和最小值都管用:

int x = 10; 
int y = 5; 
x = x + y;   // x 15 
y = x - y;   // y 10 
x = x - y;   // x 5

方案二:采用异或进行值交换,代码如下:

int x = 10; // x 0000 1010 
int y = 5;  // y 0000 0101 
x = x ^ y;  // x 0000 1111 
y = x ^ y;  // y 0000 1010 
x = x ^ y;  // x 0000 0101

方案三:采用表达式运算交换,代码如下;

//利用表达式运算
int x = 10; 
int y = 5; 
x = y + 0 * (y = x);  // 先将y参与运算,然后将x值赋给y,最后再将结果(也就是y)赋给x 
System.out.println("x: " + x + " y: " + y);