日期:2014-05-20  浏览次数:20623 次

关于交换两个值的问题
现在定义一个public void swap(int a, int b){}方法,接下来的main函数里面:
public static void main(String[] args){
  int x = 5;int y = 6;
  swap(x,y);以此达到交换两个值的问题
}听到网上很多人说可以用数组来做,我不会,求指教~~~~异或运算可以的,我试过了,就数组不懂~~~

------解决方案--------------------
java的初学者大都犯LZ这样的错误,因为java没有指针操作,所以不能单纯的改变引用指向来达到结果外传的目的
LZ可以想想,main的x,y和swap的a,b是相同的变量吗?如果不是,你改变一个,怎么会影响另一个?
采用数组的话,main的数组变量和swap的数组变量虽然不时同一个变量,但是它们指向同一个数组对象,所以改变一个引用变量的属性(对数组来说就是改变元素),另一个引用变量能看到对象的变换
------解决方案--------------------
最近怎么这么多人问这个问题呢
楼主记住两点:
1 对象传引用(引用即指针)
2 原始类型传值
你的例子里就是原始类型,传的参数是一个副本,当然不能改变