值传递问题,完善下面代码public class SwapTest { /**
 * @param args
 */
public static void main(String[] args) {
int a = 3, b = 4;
swap(a,b);
System.out.println(a+","+b);
Integer a1 = new Integer(3);
Integer b1 = new Integer(4);
swap(a1,b1);
System.out.println(a1+","+b1);
}

// 交换a和b的值
public static void swap(int a, int b){ }
// 交换a和b的值
public static void swap(Integer a, Integer b){ }}
java值传递

解决方案 »

  1.   

    我知道Integer是immutable的,做不像啊,坐楼等高手
      

  2.   

    第二个通过反射是可以完成的 public static void swap(Integer a, Integer b){
    Class clazz = Integer.class;
    try {
    int temp = a.intValue();
    Field field = clazz.getDeclaredField("value");
    field.setAccessible(true);
    field.set(a, b.intValue());
    field.set(b, temp);
    field.setAccessible(false);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    不过第一个感觉不太可能吧,楼主有没有答案啊,说说啊
      

  3.   

    java中不能按照楼主给的方法来实现!!
      

  4.   

    那些int ,char,如果把值传递给了一个方法,是不是就完成了他的任务,该方法的一切行为和他们无关了?
      

  5.   

    哈哈,大家都挺厉害的啊, 我做的时候就是被忽悠了其实严格来说,2个都是无法实现的,要想真正的交换2个对象必须是交换两个对象在内存中的地址,但是java中是没有地址这个概念的--就是指针。知道c语言的同学应该能理解。但是不那么严格的话,如果吧对象中的所有属性的值都交换一下,也算一种交换吧,但是integer没有方法可以更改value的值,所以开始我也以为不可以,现在看到5楼同学用反射实现了,也学习了