下列程序在1處是否會有異常,如果沒有,輸出是什么?是否會運行到2處,如果會,輸出是什么?為什么會有這樣的結果?
import java.util.ArrayList;
import java.util.List;
public class TestClass {
public static void main(String args[]) {
List list = new ArrayList();
test2(list);
System.out.println(list.size()); // 1處
test3(list);
System.out.println(list.size()); // 2處
}
public static void test2(List list) {
list = null;
}
public static void test3(List list) {
list.add(“aaaa“);
}
}
plumeChen:
不會出錯的。結果是0,1。
因為test2(list)傳得是list的引用,我理解成指針置的副本,list=null;只是把那個傳入的值設置為null,不改變原來list的指針和內容。test3(list)傳入的一樣,但是執行了list.add()由于傳入指針值的副本也指向原來的那個list的地址,所以原來的那個list的內容就改變了,size變成了1了。
編輯推薦:
(責任編輯:xy)