java传递对象指针_java中的参数(对象)是怎样传递的?

如果是by reference:

void swap(MyClass lhs, MyClass rhs)

{

MyClass temp = lhs;

lhs = rhs;

rhs = temp;

}

却不行.....

但又不可能是值传递。

那么,到底是..................

|

如果你要交换地址,需要用好像c++那样的双重指针才行,因为你传到swap里面的rhs和lhs,是swap函数的内部变量,怎么改变他们的指针,都指示影响到这两个变量的生存期内,也是就是swap函数内。对他们的外部没有影响,注意,这两个地址是用值的方式传进去的。你传的是这两个指针的内容(内存地址),不是指向这两个指针的指针,也不是这两个指针指向的内存内容。你要用这样的swap函数进行交换,就只能交换内容,因为你根本操作不了原来的两个内存引用对象。没有规定swap是交换指针的。

class TestClass{

public int c;

}

public class testapp {

//Construct the application

public testapp() {

}

public void swap(TestClass tc1,TestClass tc2)

{

TestClass temptc=tc1;

tc1=tc2;

tc2=temptc;

System.out.println("tc1("+tc1+") = "+ tc1.c + "     tc2("+tc2+") = "+tc2.c);

}

//Main method

public static void main(String[] args) {

TestClass tc1,tc2;

tc1=new TestClass();

tc2=new TestClass();

tc1.c=1;

tc2.c=2;

testapp ta=new testapp();

ta.swap(tc1,tc2);

System.out.println("tc1("+tc1+") = "+ tc1.c + "     tc2("+tc2+") = "+tc2.c);

}

自己看看结果如何吧。特别注意一下里面的内存指针,传到swap里面已经变了,只不过其内容是指向同一个内存块而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值