public static void main(String[] args) {
List list = new ArrayList();  //初始化,list不为null test2(list);
if (list == null)
System.out.println("after test2 list is null"); test3(list);
System.out.println(list.size());

} public static void test2(List list) {
list = null;
} public static void test3(List list) {
list.add("a");
}
为什么调用test2()后list没改变,而调用test3()就改变了啊?

解决方案 »

  1.   

    我是这样猜的:test2方法里面的list和main方法中的list是两个不同的引用。但是都指向了同一块内存地址。但是在方法test2中令其中的list引用指向null(也就是什么都不指向。)但是不影响main方法中的list引用应该是这样的吧
      

  2.   

    那test3()方法不也一样么?调用test3()方法后main方法中的list值不是都改变了么!
      

  3.   

    对啊!因为指向同一个内存地址。。list值肯定要改变啊