原值不变问题"/>
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修改引用对象地址值原值不变问题
发布评论