对于Java包装类作为参数传递的一些个人理解【转】

参数传递的不同情形

首先说明的是,Java和C中所有的参数传递都是值传递。
不管是参数类型是原始类型,还是引用类型,其实传过来都是值。只不过原始类型传过来的值正是你所需要的,而引用类型传过来的值是个地址,你通过这个地址来找到你所要用到的值。

参数传递分为两种情况。
一 参数类型是原始类型,形参只是得到实参的值,它和实参是两个不同的对象,不会互相影响。
二 参数类型是引用类型,形参得到的是实参中存的地址,形参和实参可以通过这个地址访问到同一个对象。无论你是你通过实参还是形参来修改对象的属性,它的内容都是改变了。但是,如果你在方法中改变了形参的指向,它本来存的是A的地址,后来改为存入B的地址,它就不会再对A产生什么影响了。

更好理解的比方,类似于,两个盒子。第一种情况是两个盒子中的放的东西是一样的,但是无论其中一个盒子里的东西怎么改变,对另一个盒子里的内容都不会有影响。第二种情况就是两个盒子里放了两把钥匙,利用他们就能够进入同一间屋子。无论屋子里的布局怎么变化,你打开的都是同一间屋子。,如果你在方法中改变了形参的指向,就相当于你把其中一个盒子的钥匙换了,那么两把钥匙开的就是两扇门。

包装类作参数传的是什么?

最开始的时候我简单的以为使用包装类作参数就可以解决通过形参进行两变量交换的问题。结果就是啥也没换。
在这里插入图片描述到这里我就在想为什么会这样呢,网上的说法有那么几种。
第一种是在这里插入图片描述
出处:
https://blog.csdn.net/qq_44049351/article/details/103214324

第二种是
在这里插入图片描述
但是这篇博客中也对此进行了说明。

https://blog.csdn.net/a1065712890/article/details/79735006

以上都是错误的,对我们这些刚入门的小白来说,真的是很误导人。

那这个包装类作参数最后没有交换,属于什么问题呢?
就属于它把盒子里的钥匙给换了。
这里有很详细的分析。
https://www.cnblogs.com/gslyyq/p/4950734.html

它跟final修饰类,修饰变量,无关。

解决方法

解决的思路就是确保形参和实参指向同一个对象,且在方法中没有改变形参的指向。

这里利用数组做个演示。在这里插入图片描述还可以通过修改对象的属性来达到这样的目的。

到此解决了我的一些困惑,如果你恰巧看到这里,希望它能对你有所帮助。

以上有所转载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值