java如何改变实参

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:25:56
在c里的
swap(int &a,int &b){
int c=a;
a=b;
b=a;
}
可以改实参值
在java怎么实现类似功能?
写错了b=c才对

1.这样的方法在Java里永远也实现不了
2.对于基本类型按值传递,对象类型按引用传递
3.Java引用的传递与C++指针不同,指针即地址,而引用是存储指针的变量
这么说你可能还会糊涂,举个例子:
//比如有两个对象:
Integer a=new Integer(1);
Integer b=new Integer(2);
//还有一个方法,类似你上面写的,不同的是这里传递的是对象引用
public void swap(Integer a,Integer b){
Integer c=a;
a=b;
b=c;
}
//如果你调用了swap方法
swap(a,b);
//可能你认为是直接把a,b的引用直接传递给swap方法,其实并非如此
//Java在传递引用时,实际上后台会先复制引用,例如上面就会复制a,b的两个引用a1,b1,然后将a1和b1作为参数传递过去
//执行方法以后,a1指向对象b,b1指向对象a,而引用a和b并没有改变

//对于一个类的私有属性是可以交换的
public class Swap{
private int a;
private int b;

public Swap(int a,int b){
this.a=a;
this.b=b;
}

public void swap(){
int temp=this.a;
this.a=this.b;
this.b=temp;
}

public int getA(){
return a;
}

public int getB(){
return b;