java容器List小题

分析如下Java 代码,编译运行后将输出()
public class Test {
public Test() {
}
static void print(List al) {
al.add(2);
al = new ArrayList();
al.add(3);
al.add(4);
}
public static void main(String[] args) {
List al = new ArrayList();
al.add(1);
print(al);
System.out.println(al.get(1));
}
}

 A	1
B.	2
C.	3
D.	4

答案:B
解析:1,java中参数传递都是按值传递的,所以print(al);这一句传递的是引用al的地址值,所以print的形参al和其指向同一内存块,通过print中的al可以改变指向的内存块的值为{1,2},后来,函数print里的al又被重新分配了一块内存空间里面存有{3,4}但是这个内存块在函数执行结束后就会被销毁,包括传递过来的al地址的值(复制的那一份)也会被销毁,所以最后只有{1,2}被保存下来,最终通过get(索引值)函数可以找到2.

猜你喜欢

转载自blog.csdn.net/qingyibaicai/article/details/83756778