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