高分悬赏: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