公眾號:mywangxiao
及時發(fā)布考試資訊
分享考試技巧、復(fù)習(xí)經(jīng)驗
新浪微博 @wangxiaocn關(guān)注微博
聯(lián)系方式 400-18-8000
下列程序在1處是否會有異常,如果沒有,輸出是什么?是否會運(yùn)行到2處,如果會,輸出是什么?為什么會有這樣的結(jié)果?
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:
不會出錯的。結(jié)果是0,1。
因為test2(list)傳得是list的引用,我理解成指針置的副本,list=null;只是把那個傳入的值設(shè)置為null,不改變原來list的指針和內(nèi)容。test3(list)傳入的一樣,但是執(zhí)行了list.add()由于傳入指針值的副本也指向原來的那個list的地址,所以原來的那個list的內(nèi)容就改變了,size變成了1了。
編輯推薦:
JAVA認(rèn)證考試報考指南 / 更多JAVA考試模擬試題
(責(zé)任編輯:xy)