面试题:不使用新的变量完成交换两个原有变量的值
题目要求:
不使用新的变量完成交换两个原有变量的值。
解题思路:
有加减法与亦或法两种,其实思路是一致的。推荐亦或法,不仅仅是代码上更简单,而且亦或的运算在理论上也要比加减法更快。
package chapter6;
/**
* Created with IntelliJ IDEA
* Author: ryder
* Date : 2017/8/20
* Time : 21:39
* Description:不使用新的变量,交换两个原有变量的值
**/
public class P312_ExchangeTwoNumbers {
public static void main(String[] args){
//基于加减法
int a = 3;
int b = 5;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a="+a+",b="+b);
//基于异或法
a = 3;
b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a="+a+",b="+b);
}
}
运行结果
a=5,b=3
a=5,b=3