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

swap
class TestSwap
{
public static void swap(int a,int b){ 
  int t=a; 
  a=b;  
  b=t;  
}  

public static void main(String args[]){ 
int x=2;  
int y=3;  
swap(x,y);  
System.out.println(x);
}  


这样的程序交换顺序后交换的结果不是保存不下来吗,怎样才能让x和y的值交换呢让输出结果为3呢

------解决方案--------------------
[code=Java][/code]
public class TestSwap {


public static void main(String args[]) {

Integer a=new Integer(2);
Integer b=new Integer(3);

ObjectChange ob=new ObjectChange(a,b);
ob.change();
System.out.println("a= "+a.intValue()+" b="+b.intValue());
System.out.println("a= "+ob.getA()+" b="+ob.getB());

}
}

class ObjectChange{

private Integer a;
private Integer b;
public ObjectChange(Integer a, Integer b) {
super();
this.a = a;
this.b = b;
}

public Integer getA() {
return a;
}

public void setA(Integer a) {
this.a = a;
}

public Integer getB() {
return b;
}

public void setB(Integer b) {
this.b = b;
}

public void change(){
Integer temp;
temp=a;
a=b;
b=temp;

}
}
------解决方案--------------------
Java中传参的方式是传值不传址,要实现swap函数也不是不可能,但很繁琐,最终写出的代码已经偏离这个函数的初衷
难怪有人戏称:“伟大的java就这么否决了swap函数”
------解决方案--------------------
一般就使用数组方式,或者写一个辅助类,挺麻烦的.