temp=a,temp和a都指向同一个地址,所以你这么一换,a和b都是一样了,
你应该实现clone()方法。

解决方案 »

  1.   

    谢谢各位,但是好象cheify说的有点问题,a,b在方法体内是交换了,
    只不过没传出来交换后的值,是不是因为内存的原因?离开方法体
    所建的对象失效了,
      

  2.   

    1.c++和java中,当函数的参数不是引用时(就是传值),你传递的是值得副本(传值)。
    2.在c++中,当参数是引用类型,你传递的是引用或者内存地址(传引用),而在java中,传递一个引用类型的参数的结果只是传递引用的副本(传值)而非引用自身。对于java来说无论参数是基本类型的变量,还是某个对象的reference,都只有一种参数传递机制:传值!两个误区:1.传值就不会改变参数内容 2.只有传址才会改变参数内容上面的swap()函数,形式参数a,b都只是实际参数的值的拷贝,因此他们的互换并不会改变实际参数的值如果swap()函数内部有这样的语句  a.change()  //change改变student对象
    那么此时形式参数a的变化也会影响到实际参数,因为他们都指向同一个内存块这里面有很完整的介绍http://www.zdnet.com.cn/developer/code/story/0,2000081534,39049790,00.htm