因為java規定,變量沒有初始化不能使用,全局變量也就是類的屬性,java會在編譯的時候,自動將他們初始化,所以可以不什么變量初始化的操作。但是(局部)變量必須初始化
這個在工作中也得到了很好的驗證:
如果是在類的成員變量中,BookInfo bookinfo;和BookInfo bookinfo=null;是一樣的效果;因為該類在初始化時成員變量也會做初始化,默認就是null;而方法內的變量則不會初始化;
而如果是局部變量,則必須初始化,也就是=null或者new,因為為了保證java的安全性;
額外補充:
今天在寫代碼時,遇到一個問題,特此進行記錄。
for (ProfileDto profileDto : profile)
{
// Profile resProfile=null;
Profile resProfile=new Profile();
// 將profileDto對象的屬性值復制給resProfile對象
Tools.copyPropertiesIgnoreNull(profileDto, resProfile);
proList.add(resProfile);
}
今天在寫這段代碼時,起初是Profile resProfile=null;然后debug走到復制屬性方法的時候,就直接跳出了,
然后改為new的方式就ok了。
所以就很好奇,對此特地進行研究和總結。
對象 = null 指向到一個空地址,只是聲明了一個對象的引用,並沒有在jvm中開辟內存,已進行存儲。
而u2 指向的一個具體的對象,對象需要空間存放的。在對象引用的時候,會將對象的內存地址傳給引用的對象,以進行存儲。。。
另外,如果你創建的對象,需要自己去讀取操作數據,就需要通過new的方式,可以進行初始化,如果是接收其他地方的
傳值,可以不通過new的方式,創建對象。
