在编程中经常要进行数据交换我们数据交换最常用内容如下:
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);
本文出自 “用代码烙印人生” 博客,请务必保留此出处http://vologa.blog.51cto.com/2662985/1366008
原文:http://vologa.blog.51cto.com/2662985/1366008