ava中的引用调用,只是传地址值调用,并没有像c和c++传的是引用
OnlyTest.java
public class OnlyTest {
private int x=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
TrySwap.java
public class TrySwap {
public static void main(String[] args) {
TrySwap ts= new TrySwap();
ts.showDirrer();
}
public void showDirrer(){
OnlyTest ox=new OnlyTest();
ox.setX(100);
OnlyTest oy=new OnlyTest();
oy.setX(200);
System.out.println("调用swap方法之前的值:\n0x.x="+ox.getX()+",oy.x="+oy.getX());
swap(ox,oy);
System.out.println("调用swap方法之后的值:\n0x.x="+ox.getX()+",oy.x="+oy.getX());
}
public void swap(OnlyTest a,OnlyTest b){
OnlyTest temp;
temp=a;
a=b;
b=temp;
}
}
运行:
说明:ox.oy分别把两个对象在堆中开辟的内存空间的地址复制给了a,b.然后a和ox共同指向一个对象,b和oy共同指向一个对象。然后a,b值对调。对调的只是a和b的值,但是并没有对象ox和oy的值,所以运行结果依旧如此。
总结:从上面运行和分析可知,java中的引用调用,只是传地址值调用,并没有像c和c++传的是引用