引用传递举例
注:文章内容由网络及相关书籍整理而来,如此只为共享知识,给予帮助。
下列程序在1处是否会有异常,如果没有,输出是什么?是否会运行到2处,如果会,输出是什么?为什么会有这样的结果?
import java.util.ArrayList;
import java.util.List;
public class TestClass {
public static void main(String args[]) {
List list = new ArrayList();
test2(list);
System.out.println(list.size()); // 1处
test3(list);
System.out.println(list.size()); // 2处
}
public static void test2(List listA) {
listA = null;
}
public static void test3(List listB) {
listB.add("aaaa");
} }
不会出错的。结果是0,1。
调用方法test2时,把list赋给listA,发生对象引用的复制。结果是,listA也指向了list所指向的对象。因为listA只是对象引用list的副本,所以执行“list=null;”后,listA不指向任何对象。只是把那个传入的值设置为null,不改变原来list的指针和内容。同理,listB指向原来的那个Arraylist的地址,所以原来的那个Arraylist的内容增加了“aaaa”,size就变成了1。