引用传递举例

注:文章内容由网络及相关书籍整理而来,如此只为共享知识,给予帮助。

下列程序在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。

posted on 2008-05-11 15:32  大崩  阅读(232)  评论(0编辑  收藏  举报