/**
* @(#)ChangeVar.java
*不引入第三变量交换两个参数值得5种方法
* @parm
* @author yehaicao
* @version 1.00 2016/1/25
*/
public class ChangeVar{
public void method1(int a,int b){
System.out.println ("方法一:");
System.out.println ("a和b的值为:"+a+" "+b);
b = a + b - (a=b);//或者 a=a+b-(b=a);
System.out.println ("交换后a和b的值为:"+a+" "+b);
}
public void method2(int a,int b){
System.out.println ("方法二:");
System.out.println ("a和b的值为:"+a+" "+b);
a=a*b;
b=a/b;
a=a/b;
System.out.println ("交换后a和b的值为:"+a+" "+b);
}
public void method3(int a,int b){
System.out.println ("方法三:");
System.out.println ("a和b的值为:"+a+" "+b);
a = b + (b=a)*0;
System.out.println ("交换后a和b的值为:"+a+" "+b);
}
public void method4(int a,int b){
System.out.println ("方法四:");
System.out.println ("a和b的值为:"+a+" "+b);
a= a+b;
b= a-b;
a= a-b;
System.out.println ("交换后a和b的值为:"+a+" "+b);
}
public void method5(int a,int b){
System.out.println ("方法五:");
System.out.println ("a和b的值为:"+a+" "+b);
a= a^b; // a1=a^b
b= a^b; // b=a1^b
a= a^b; // a=a1^b=a1^(a1^b)=a1^a1^b=b
//同一变量与另一变量和其异或值异或等于自身。
System.out.println ("交换后a和b的值为:"+a+" "+b);
}
public static void main(String[] args) {
ChangeVar changeNum = new ChangeVar();
changeNum.method1(11,22);
changeNum.method2(33,44);
changeNum.method3(55,66);
changeNum.method4(88,99);
changeNum.method5(00,55);
}
}