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 不是引用类型吗? 求大大解释下
2. ArrayList al=new ArrayList();
al.add(1);
print(al);print(al)的参数al和print(ArrayList alArg)的alArg不是一个,alArg是al的副本,与al指向同一个对象。
方法中 alArg=new ArrayList();之后,两者指向的不是同一个对象了。
而print函数中的新al,由于只是个形参,所以不可能取代Main中的al。
print函数是另一个目录,里面也放了快捷方式:al,初始取值是复制的main函数的al所保存的目标路径;
后来print函数中把快捷方式al中保存的目标路径修改了,但显然main函数中的那个快捷方式al中所保存的目标路径并不会被修改。
方法中 alArg=new ArrayList();之后,两者指向的不是同一个对象了。 有点明白了
也就是说 al.add(1); al.add(2); 作用于一个对象print()中的 al=new ArrayList(); 声明了1个新的arraylist 是局部变量 对吗?
没错!跟古老的问题:如何用Java写一个swap(int a,int b)函数是类似的问题。