3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
第二個(gè)錯(cuò)了,String a;和String a = null;是一回事。
另外“分配”這詞比較含糊。我們可以說(shuō)
String a = "";是編譯期間就已經(jīng)由編譯器在常量池里為a分配了空間。
String a = foo();是foo這個(gè)函數(shù)內(nèi)為a分配了空間。
String a = new String();是在運(yùn)行的時(shí)候,動(dòng)態(tài)地為a分配了空間。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
string a; 其實(shí)就是聲明了"a" 在內(nèi)存中只創(chuàng)建引用卻沒(méi)有分配空間 沒(méi)有任何指向 直接引用會(huì)報(bào)錯(cuò) 聲明在類中 如果類有構(gòu)造方法 這個(gè)時(shí)候會(huì)給
“a”賦初始值 此時(shí)string a等價(jià)于 string a=null
string a=null 在內(nèi)存中創(chuàng)建引用并且是生成了一個(gè)大小為“0”的空間的 但是沒(méi)有任何指向 如果不引用的話 最后會(huì)被java的回收機(jī)制回收的
string a = “”; 聲明并賦值 內(nèi)存中創(chuàng)建引用并且分配空間 且有所指向
從實(shí)際的角度來(lái)說(shuō) 全局變量可以只聲明不賦值 比如說(shuō)實(shí)體類的屬性 而局部變量是應(yīng)該聲明并且賦初始值的
- 3 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)