首先可以确定的是,JAVA的List是引用传递,也就是说在作为参数传递进去list和原来的list指向同一空间,互相影响。
但仍有些地方需要注意。
通过代码解释:
代码一:
public void test() {
List<String> list = new ArrayList<>();
list.add("1");
modify(list);
for(String string:list)System.out.println(string);
}
private void modify(List<String> list) {
list.add("2");
}
此时的输出会是1、2。说明List的传递是引用类型的。
代码二:
public void test() {
List<String> list = new ArrayList<>();
list.add("1");
modify(list);
for(String string:list)System.out.println(string);
}
private void modify(List<String> list) {
list = new ArrayList<>();
list.add("2");
}
此时输出是1!!!不是2。原因是因为在modify中使用了语句list = new ArrayList<>();相当于是给modify中的list重新声明了一块空间。(如果感到困惑,可以将参数值的list名字换一下譬如list1就好理解了)