简单记录一下
java到底是值传递还是引用传递,我第一次遇到这个问题的时候困惑了小半年,初学java时知道方法的结果需要返回值返回,但后来的工作中也用到过将集合传入一个方法,在这个方法中修改集合,方法结束后得到的是修改后的集合; 说到底是java方法调用的内存模没有理解 废话到此:
java确实使用引用传递的,向一个方法传递对象时,传递的引用被形参接受收,通过形参修改对象 ,就是修改对象实际所在的内存(就是形参和实参都指向的内存);方法结束后实参指向的内存确实的被修改了; 那么 为什么 integer double String 等基本类型包装类 在传递后被修改无效呢? 实际上是我们重建了一个对象并赋给了形参,修改了形参的指向;实参指向的内存并没有被修改,所以我们得不到被修改的对象;
附录1: 基本类型传递我没有弄清楚!
附录2: 基本类型包装型 以及String 都是被设计成不可修改的类;即final Class String 不可继承 并且不提供任何修改对象属性的方法;所有涉及到修改的方法都返回一个新创建的对象,原对象并没有被修改;(形参接受到的对象在修改时,其实创建了新的对象开辟了新的内存空间,实参指向内存并没有被修改);这样做的好处就不再这里记录了