Java集合传递不解

TechBirds 发布于 2013/04/27 14:47
阅读 531
收藏 0

public void changeList(List<Integer> list){
		List<Integer> tlist=new ArrayList<Integer>();
		tlist.add(1);
		tlist.add(2);
		list=tlist;
	}
	
	@org.junit.Test
	public void testList(){
		List<Integer> l =new ArrayList<Integer>();
		changeList(l);
		System.out.println(l.size());//0,不解?
	}
求解?
加载中
0
r
roywang
changeList的list只是一个引用,指向外部的list,你改变这个指向,原来指向的list还是没变
0
情天大圣
情天大圣
tlist是局部变量
0
Erroooooor
Erroooooor

java基础。 引用的传递的问题。

调用changeList的时候传递的是l的引用的一份copy

0
moyiguke
moyiguke

1楼正解。


0
vvtf
vvtf

你实在弄不清楚

就加上

return someone;

0
随影求是
随影求是
引用传递本质上还是值传递
0
J
Jwxl

“l”是你传递进changeList方法的参数,changeList方法拿到的是“l”的引用。

changeList再把“l的引用值赋给自己的局部变量“list”

但是,你在changeList里面又new了一个List 实例,这里局部变量“list”的值就不“l”的引用了,而变成了new出来的实例“A”(暂时取个名字)的引用了。原来传进来的“l”被弃了。

你下面的所有操作都是对“A”的操作。

所以,"l"从头到尾灭有被动过。

当方法执行完毕,你返回的是void,所以“A”也被抛弃了。

所以最后你什么都没得到。

返回顶部
顶部