java 值传递和引用传递

简单记录一下

           java到底是值传递还是引用传递,我第一次遇到这个问题的时候困惑了小半年,初学java时知道方法的结果需要返回值返回,但后来的工作中也用到过将集合传入一个方法,在这个方法中修改集合,方法结束后得到的是修改后的集合; 说到底是java方法调用的内存模没有理解 废话到此:

          java确实使用引用传递的,向一个方法传递对象时,传递的引用被形参接受收,通过形参修改对象 ,就是修改对象实际所在的内存(就是形参和实参都指向的内存);方法结束后实参指向的内存确实的被修改了;  那么 为什么 integer  double    String  等基本类型包装类 在传递后被修改无效呢?  实际上是我们重建了一个对象并赋给了形参,修改了形参的指向;实参指向的内存并没有被修改,所以我们得不到被修改的对象;

              附录1:  基本类型传递我没有弄清楚!

              附录2: 基本类型包装型 以及String  都是被设计成不可修改的类;即final Class String  不可继承 并且不提供任何修改对象属性的方法;所有涉及到修改的方法都返回一个新创建的对象,原对象并没有被修改;(形参接受到的对象在修改时,其实创建了新的对象开辟了新的内存空间,实参指向内存并没有被修改);这样做的好处就不再这里记录了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值