在编程中经常要进行数据交换我们数据交换最常用内容如下:
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);
转载于:https://blog.51cto.com/vologa/1366008