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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

9 回答

已采納
?
子木李

TA貢獻46條經(jīng)驗 獲得超27個贊

Java里只有按值傳遞,沒有按引用傳遞,之所以傳遞對象后能可改變這個對象的屬性,是因為在方法中,傳遞的是一個該對象的副本,然后這個副本指向的是該傳遞過來的對象所指向的堆內存中的對象,所以,修改了副本所指向的屬性同樣會修改原始對象的屬性,但是,當使用new時,副本和對象不再指向同一個地址,副本指向了一個新的地址,傳入的參數(shù)還是指向原來的地址,所以,樓主這題里雖然在initUser中初始化了User對象,但是只是在這個initUser中user不是空的,傳遞過來的user依然是空的,也就是并沒有初始化外面addUser函數(shù)里的user對象,所以會空指針異常

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

TA貢獻1條經(jīng)驗 獲得超3個贊

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

查看完整回答
3 反對 回復 2016-03-15
?
4T

TA貢獻1條經(jīng)驗 獲得超0個贊

java傳參傳入的對象其實是一個副本,相當于你穿參開始,就有2個user了,你改變initUser中的副本user當然不會改變到本來的user

查看完整回答
反對 回復 2016-03-15
?
慕無忌9989543

TA貢獻1條經(jīng)驗 獲得超0個贊

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

查看完整回答
反對 回復 2016-03-15
?
孤舟放逐

TA貢獻1條經(jīng)驗 獲得超0個贊

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

initUser(User user){

user=new User();

}

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

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


查看完整回答
反對 回復 2016-03-15
  • wswzh0329
    wswzh0329
    http://idcbgp.cn/wenda/detail/311760 幫我看看介個 關于匿名內部類的問題 謝謝!
?
20091807

TA貢獻3條經(jīng)驗 獲得超0個贊

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

也就是方法里面只是給參數(shù)user這個局部變量賦值而已,當initUser方法退出時,參數(shù)user局部變量也就沒了。

查看完整回答
反對 回復 2016-03-15
  • Sace
    Sace
    我覺得是和new的過程有關吧,因為在同樣的init方法中如果傳入一個單例對象的話,是可以進行操作的(就是劃掉26行)
  • kokoromi
    kokoromi
    就你說的是對的,Java中只有值傳遞,user傳進來后會被復制一個副本,而這個副本和原來的user位于棧中的不同位置,方法中的副本user存儲的是 new User()對象在堆中的地址,而原來的處于棧中的另一個位置的user存儲的依然是原來的null。
?
風塵之魂

TA貢獻5條經(jīng)驗 獲得超1個贊

不是有個=null寫的很清楚啊 ?自然就是空指針了。

查看完整回答
反對 回復 2016-03-15
?
Caballarii

TA貢獻1123條經(jīng)驗 獲得超629個贊

initUser的參數(shù)獲得的是user對象的地址的復制,所以不會改變原來user對象的地址

查看完整回答
反對 回復 2016-03-15
?
badbomb

TA貢獻16條經(jīng)驗 獲得超10個贊

只是傳值,沒有傳地址

查看完整回答
反對 回復 2016-03-15
  • 9 回答
  • 5 關注
  • 2605 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號