java实现数据交换
先上代码:
public classTest{
public static void main(String[] args) throws Exception{
Integer a = 1;
Integer b = 2;
System.out.println("before : a=="+a+";b=="+b);
swap(a,b);
System.out.println("after : a=="+a+";b=="+b);
}
public static void swap(Integer num1,Integer num2) throws IllegalAccessException,NoSuchFieldException{
Field field = num1.getClass().getDeclaredField("value");
field.setAccessible(true);
int temp = num1;
field.set(num1,num2);
field.set(num2,new Integer(temp));
}
}
总结:
1、java中的基本数据类型传递属于引用传递,并不会像c/c++实现指针传递;
2、通过反射可以实现数据的交换;
3、Integer把-128到127(可调)的整数都提前实例化了,即加载时会提前缓存,所以交换-128至127的整数时需要进行装箱(new Integer()).