高分悬赏:Java语言使用一个函数交换两个数字,要完整的代码

高分悬赏:Java语言使用一个函数交换两个数字,要完整的代码

不使用第3个变量 把两个整数进行交换的代码:

        int a=120;
        int b=11;
        a = a^b;
        b = a^b; //此时b就是原来的a 了 120  (a^b)^b ==> a^(b^b) ==> a^0 ==> a
        a = a^b; //这就是真正的 a^b^a 就是原来的b 了 11  (a^b)^a ==> b^(a^a) ==> b^0 ==> b

public static void swap(int a,int b) {
int temp =0;
temp = a;
a=b;
b=temp;
}

使用反射!
package com.test;

import java.lang.reflect.Field;

public class Test2 {

public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    Integer i = 200;
    Integer j = 400;
    reverse(i,j);
    System.out.println("i====" + i);
    System.out.println("j====" + j);

}

private static void reverse(Integer i, Integer j) throws Exception{
    Integer t = new Integer(i);
    Field field_i = Integer.class.getDeclaredField("value");
    field_i.setAccessible(true);
    field_i.set(i,j);

    Field field_j = Integer.class.getDeclaredField("value");
    field_j.setAccessible(true);
    field_j.set(j,t);


}

}
输出结果:
i====400
j====200