第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

下面這道面試不太懂啊,高人看看

下面這道面試不太懂啊,高人看看

Sace 2016-03-15 00:07:21
19行有空指針異常,這是為什么?user不是已經(jīng)指向新創(chuàng)建的User對(duì)象了嗎?
查看完整描述

9 回答

已采納
?
子木李

TA貢獻(xiàn)46條經(jīng)驗(yàn) 獲得超27個(gè)贊

Java里只有按值傳遞,沒(méi)有按引用傳遞,之所以傳遞對(duì)象后能可改變這個(gè)對(duì)象的屬性,是因?yàn)樵诜椒ㄖ校?strong>傳遞的是一個(gè)該對(duì)象的副本,然后這個(gè)副本指向的是該傳遞過(guò)來(lái)的對(duì)象所指向的堆內(nèi)存中的對(duì)象,所以,修改了副本所指向的屬性同樣會(huì)修改原始對(duì)象的屬性,但是,當(dāng)使用new時(shí),副本和對(duì)象不再指向同一個(gè)地址,副本指向了一個(gè)新的地址,傳入的參數(shù)還是指向原來(lái)的地址,所以,樓主這題里雖然在initUser中初始化了User對(duì)象,但是只是在這個(gè)initUser中user不是空的,傳遞過(guò)來(lái)的user依然是空的,也就是并沒(méi)有初始化外面addUser函數(shù)里的user對(duì)象,所以會(huì)空指針異常

查看完整回答
6 反對(duì) 回復(fù) 2016-03-15
  • Sace
    Sace
    可不可以這么理解:在成員函數(shù)中創(chuàng)建的對(duì)象的生命周期僅限于在成員函數(shù)內(nèi),如果不進(jìn)行return則可能會(huì)被虛擬機(jī)釋放掉?
  • Caballarii
    Caballarii
    不一定,如果函數(shù)的參數(shù)是對(duì)象數(shù)組或者list,你創(chuàng)建一個(gè)對(duì)象加入這個(gè)數(shù)組或者list,是可以改變數(shù)組或者list的。
  • 漆黑夜明
    漆黑夜明
    的確。
點(diǎn)擊展開(kāi)后面1
?
慕尼黑6921937

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超3個(gè)贊

java中,方法的參數(shù)是值傳遞,在initUser方法中,將user對(duì)象的地址賦值給了initUser中參數(shù)user,現(xiàn)在他們指向同一片地址。然而,方法initUser的參數(shù)在方法中又指向了另一地址,實(shí)際的user對(duì)象的地址依舊沒(méi)變,仍然為null。

查看完整回答
3 反對(duì) 回復(fù) 2016-03-15
?
4T

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

java傳參傳入的對(duì)象其實(shí)是一個(gè)副本,相當(dāng)于你穿參開(kāi)始,就有2個(gè)user了,你改變initUser中的副本user當(dāng)然不會(huì)改變到本來(lái)的user

查看完整回答
反對(duì) 回復(fù) 2016-03-15
?
慕無(wú)忌9989543

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

java中的參數(shù)傳遞 其實(shí)相當(dāng)于一種賦值,如果是基本類(lèi)型就是直接賦值,如果是引用類(lèi)型就是把引用賦給形參,如上題,在addUser方法中 user 雖然是null,但是傳遞給initUser方法的時(shí)候他是實(shí)參,相當(dāng)于將這個(gè)實(shí)參的引用賦給了initUser方法的形參 user,說(shuō)白了 就是initUser方法的形參user指向了addUser方法里面的user(也就是指向了null),然后呢,在initUser方法里面,把形參user又指向了新的引用 new User(),這里的指向 ?和addUser方法里面的user沒(méi)有一點(diǎn)關(guān)系,那個(gè)user還是指向null

查看完整回答
反對(duì) 回復(fù) 2016-03-15
?
孤舟放逐

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

使用對(duì)象作為參數(shù)傳遞的是對(duì)象的引用?。≈挥蠸tring作為參數(shù)例外?。?/p>

initUser(User user){

user=new User();

}

這個(gè)參數(shù)傳遞的只是null對(duì)象的引用,而user=new User()這句話已經(jīng)將user指向了一個(gè)新的對(duì)象;

且這里的user參數(shù)和外面的user是不一樣的,inituser(User user)里的user作用域就只是這個(gè)函數(shù),所以外面那個(gè)user依舊指向了一個(gè)空的實(shí)例;


查看完整回答
反對(duì) 回復(fù) 2016-03-15
  • wswzh0329
    wswzh0329
    http://idcbgp.cn/wenda/detail/311760 幫我看看介個(gè) 關(guān)于匿名內(nèi)部類(lèi)的問(wèn)題 謝謝!
?
20091807

TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超0個(gè)贊

User user = null;的user 跟 initUser(User user)方法的user參數(shù)不是同一個(gè)棧上面的局部變量。

也就是方法里面只是給參數(shù)user這個(gè)局部變量賦值而已,當(dāng)initUser方法退出時(shí),參數(shù)user局部變量也就沒(méi)了。

查看完整回答
反對(duì) 回復(fù) 2016-03-15
  • Sace
    Sace
    我覺(jué)得是和new的過(guò)程有關(guān)吧,因?yàn)樵谕瑯拥膇nit方法中如果傳入一個(gè)單例對(duì)象的話,是可以進(jìn)行操作的(就是劃掉26行)
  • kokoromi
    kokoromi
    就你說(shuō)的是對(duì)的,Java中只有值傳遞,user傳進(jìn)來(lái)后會(huì)被復(fù)制一個(gè)副本,而這個(gè)副本和原來(lái)的user位于棧中的不同位置,方法中的副本user存儲(chǔ)的是 new User()對(duì)象在堆中的地址,而原來(lái)的處于棧中的另一個(gè)位置的user存儲(chǔ)的依然是原來(lái)的null。
?
風(fēng)塵之魂

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊

不是有個(gè)=null寫(xiě)的很清楚啊 ?自然就是空指針了。

查看完整回答
反對(duì) 回復(fù) 2016-03-15
?
Caballarii

TA貢獻(xiàn)1123條經(jīng)驗(yàn) 獲得超629個(gè)贊

initUser的參數(shù)獲得的是user對(duì)象的地址的復(fù)制,所以不會(huì)改變?cè)瓉?lái)user對(duì)象的地址

查看完整回答
反對(duì) 回復(fù) 2016-03-15
?
badbomb

TA貢獻(xiàn)16條經(jīng)驗(yàn) 獲得超10個(gè)贊

只是傳值,沒(méi)有傳地址

查看完整回答
反對(duì) 回復(fù) 2016-03-15
  • 9 回答
  • 5 關(guān)注
  • 2583 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)