日期:2014-05-20  浏览次数:20569 次

求大大讲解个例题
Java code

import java.util.ArrayList;


public class Test {
    
    static void print(ArrayList al){
        
        al.add(2);
        System.out.println(al.get(0));
        System.out.println(al.get(1));
        System.out.println();
        
        
        al=new ArrayList();
        al.add(3);
        al.add(4);
        
        System.out.println(al.get(0));
        System.out.println(al.get(1));
        System.out.println();
    }
    
    public static void main(String args[]){
        Test test=new Test();
        ArrayList al=new ArrayList();
        al.add(1);
        
        print(al);
        for(int i=0;i<al.size();i++){
            System.out.println(al.get(i));
        }
        System.out.println();
        System.out.println(al.get(1));
        System.out.println();
    }

}



预期的结果是4 为啥输出结果是2呢 arraylist 不是引用类型吗? 求大大解释下

------解决方案--------------------
1.static void print(ArrayList alArg)
2. ArrayList al=new ArrayList();
al.add(1);

print(al);

print(al)的参数al和print(ArrayList alArg)的alArg不是一个,alArg是al的副本,与al指向同一个对象。
方法中 alArg=new ArrayList();之后,两者指向的不是同一个对象了。