有关java的函数调用返回值的问题和参数传递问题

这几天在项目里面碰到了一个很恼火的问题,是关于函数的传递值和返回值的问题

现描述下问题所在:1.我在一个类A中有个容器类,想要想要把初始化延迟到其他类中去处理,于是我便将类B的构造方法中加入参数,作为类B的内部变量,在类B中对这个传入的参数进行初始化,然后回到类A的执行中,去使用个这个容器类。以上逻辑一切都看起来很合理是吧?

 


类似的思路如题所示可以吧?

但是实际上说,a仍然是空的?你会问了?说好的传入地址值呢?是的,我们是传入了地址值,可是,其实传入地址值也是传入值啊,记得C语言中经典的交换参数的函数了吗?对,那个问题我们用指针就可以了。但是,请记住,我们得到地址值,在函数压堆栈的时候,也是拷贝了一个副本的,不过是因为是个地址值,也就是说,上图的fun_2()b,也是一个副本,你可以通过b去访问a容器内部的值,也可以去修改,但是,如果你对b赋值,那就和C语言中的问题一样了,你仍然是对副本赋值。所以,请注意,一定要认真对待函数的参数,他始终是副本!

还有就是,java的数组是

接下来说下函数的返回值的问题:

Java的内存空间大致这样分:

1、栈区(stack— 由编译器自动分配释放 ,存放函数

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值