请高手帮忙解释一下,为什么输出结果是2?
import java.util.*;
public class Test{
public Test() {}
static void print(ArrayList al){
al.add(2);
al = new ArrayList();
al.add(3);
al.add(4);
}
public static void main(String[] args) {
Test test = new Test();
ArrayList al = new ArrayList();
al.add(1);
test.print(al);
System.out.println(al.get(1));
}
}

解决方案 »

  1.   


    static void print(ArrayList al){
            al.add(2);  // 在al里添加一个项目 al(1)=2
            al = new ArrayList();  // 重设变量,仅在方法内部有效
            al.add(3); // 忽略
            al.add(4); // 忽略
        }
     public static void main(String[] args) {
            Test test = new Test();
            ArrayList al = new ArrayList();  
            al.add(1); // al(0)=1
            test.print(al); //al(0)=1 al(1)=2
            System.out.println(al.get(1));
        }
      

  2.   

    get 0=1
    get 1=2
    然后
      al = new ArrayList();
            al.add(3);
            al.add(4);
    和main函数里面的al没关系的
    方法里面做的逻辑并没对main里面的参数产生影响
      

  3.   

    在main里调用print方法时 你执行了 al.add(2);  语句  
      

  4.   

    main方法的a1和print方法中的参数a1指向同一个内存区域main a1 --> 1,2 <--参数 a1参数al = new ArrayList();后,参数a1指向了另一块内存,但不影响main中的a1
    main a1 --> 1,2     参数a1 --> 3,4
    System.out.println(al.get(1)); main中的a1 的第二个元素 2