java中关于参数传递的问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 01:09:30
package sd;
import java.util.*;
public class Test {
public Test(){}
static void print(ArrayList al){
al.add(2);
al = new ArrayList();
System.out.println(al.size());
al.add(3);
al.add(4);
}
public static void main(String[] args){
Test test=new Test();
ArrayList al=new ArrayList();
al.add(1);
print(al);
System.out.println(al.get(1));
}
}
请详细解释一下为什么输出的是2

原因:由于print()方法没有返回al的值,main方法定义的变量值al未改变。

package sd;
import java.util.*;
public class Test {
public Test(){}

static void print(ArrayList al){
al.add(2);//al里放进去第1个值:“2”,此时list里的值:
al = new ArrayList();//new了一个空的ArrayList,局部变量覆盖al
System.out.println("list里的值数量:"+al.size());
al.add(3);
al.add(4);

}
public static void main(String[] args){
Test test=new Test();
ArrayList al=new ArrayList();
al.add(1);//al里放进去第1个值:“1”,即al.get(0)
print(al);//作为参数传到print()方法

//由于print()方法没返回al的值,本方法定义的变量al未改变。
System.out.println("list里第2个值:"+al.get(1));
}
}

package sd;
import java.util.*;
public class Test {
public Test(){}
static void print(ArrayList al){
al.add(2);
al = new ArrayList();