本文主要是介绍java修改引用对象地址值原值不变问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天写代码遇到了一个很离谱的问题,A方法传递List进B在B方法里面修改了List的引用,但是A方法里面的List没做改变见下代码
public class Test{public void A(){List<String> list = Lists.newArrayList("123","234");System.out.println(list.size());}public void B(List<String> list){list = new ArrayList<>();}
}输出结果:2
原因
首先我们要记得方法传递的是和实参内容相同的形参,我们在方法B里面确实改变了list的地址值,但是我们改变的是list的形参的地址值,方法B运行结束
形参被回收实参不会有任何改变,可以理解成形参就是实参的一个不同栈地址的副本 见下图.可见形参的地址值改变对实参没影响
这篇关于java修改引用对象地址值原值不变问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!