在网上看到一道题,就是有 a 和 b 的值 如何不通过增加变量 交换a和b 的值。在网上找了找有两种方式 ,一种是根据与或关系交换,另外一种就是根据差值来计算。
这里主要是讲一下通过 比较差值交换。
package com.datastructure.exchange;
public class Exchange {
private int a = 5;
private int b = 12;
protected void changeUseTemp(){
int temp = 0;
temp = a;
a = b;
b = temp;
}
protected void changeNotUseTemp(){
a = b - a;//a 现在为 b 和 a 之间的差
b = b - a;//b 减去 a(此时a 为 b 和 a 的差) 此时 b 的值等于 a了
a = b + a;//b(此时b 的 值 为a) 加上 a(此时a 为 b 和 a 的差) 的值等于 b
}
protected void outPut(){
System.out.println("a = " + a + " b = " + b);
}
public static void main(String[] args) {
Exchange ex = new Exchange();
ex.changeNotUseTemp();
ex.outPut();
}
}
其中不通过中间变量 求差值的交换方式,也可以求 b = b - a 之间的差值,但其他代码需要修改一下即可。如果有兴趣的同学 也可以在网上找找与或关系交换的方式
b = b - a;
a = a + b;
b = a -b;