3 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
Java是call by value的,和這個(gè)是一樣的道理:
public static void main(String[] args) {
Object obj = new Object();
process(obj);
System.out.println(obj);//并不是null
}
private static void process(Object obj) {
obj = null;
}

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
是這樣的,在for循環(huán)內(nèi),
for (Student student : list) {
student = null;
}
當(dāng)執(zhí)行 Student student : list 時(shí),在棧中push了一個(gè)指向Student實(shí)例對象的Student引用對象(list.get(0)也指向當(dāng)前實(shí)例對象), 然后執(zhí)行 student = null; 把棧中的這個(gè)臨時(shí)引用對象變量 指向null,并不是將list.get(0) 的引用變量指向null,而僅僅是它的一個(gè)"副本"。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
你這里說foreach,然后寫一個(gè)for遍歷,for遍歷的時(shí)候,遍歷到的結(jié)果放到新變量Student student里面,怎么會(huì)是指針?你這里面的
for(Student student : list) {
}
也就是說從list遍歷到變量存到新變量Student student里,每次遍歷都會(huì)放到同一個(gè)變量里,后一次遍歷的結(jié)果會(huì)覆蓋前一次的Student student結(jié)果
添加回答
舉報(bào)