java 對象引用為null時,出現的bug問題


在Java中,對象往往包含屬性、方法及一個存儲空間,若一個對象的屬性和方法是空的則可認為這是一個空對象。

一個空對象也是對象,同樣通過對象名引用方法或屬性,但和一般對象有點不同。

1.空對象調用非靜態方法會出現空指針異常,如下圖:

 

 

 

這是因為一個null對象自身的存儲空間內是沒有任何方法和屬性的,所以任何空對象.xxx調用非靜態方法或屬性都會出現空指針異常;

但空對象可以調用靜態方法或屬性,如下所示:

 

這是因為Static 方法是存儲在靜態池當中的,一個類的所有對象共享靜態池的方法;

另外,我們可以理解null為空類型的對象,當必要的時候,他除了沒有屬性和方法之外,可以強制轉換為任意類型的對象。

以下為null調用靜態屬性及方法的例子:

以上去掉屬性和方法前面的關鍵字Static后,程序不會報錯(說明實例化null為空指針對象沒有問題),但運行時會報出空指針異常(說明實例化后的空間里面沒有方法和屬性),如下圖:

 

上面的過程大致可以用下圖來描述,每個類的靜態方法:

 

下面是一些非空對象的引用方法過程,結構類似於上面,但是.....

1.非空對象強制轉換成非父類對象,程序報錯,如下圖:

 

2.非空對象可以轉換為父類對象,但是沒有多大意義,感覺像在挖坑,因為它們轉換前后的運行結果並無區別,如下圖:

運行結果是一樣的:

 轉載自csdn原創文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM