Java中對null進行強制類型轉換的方法
今天很好奇,對null進行強轉會不會拋錯。做了如下測試得到的結果是,如果把null強轉給對象,是不會拋異常的,本身對象是可以為null的。但是如果是基本類型,比如 int i = (Integer)obj的強轉,其實內部會調用intvalue方法去賦值給基本類型,所以這時候是會報錯的。
代碼如下
Object obj = null; Integer s1 = (Integer)obj;
上面能正常執(zhí)行,即把null賦值給一個對象或者強行類型轉換賦值給對象都是沒有問題的。如果s1是 int的基本類型呢?
代碼如下,編譯時不會報錯,但是執(zhí)行,則報java.lang.NullPointerException錯誤。
int s1 = (Integer)obj; System.out.println(s1);
我們反編譯后會發(fā)現(xiàn)調用了在 intValue方法去獲取value,所以拋出空指針錯誤。
反編譯后的代碼:
Object obj = null; int s1 = ((Integer)obj).intValue(); System.out.println(s1);
類似的,在有int 與 Integer 互相轉換,即自動拆裝箱的時候,要尤其注意,會不會存在空指針異常。
補充:下面看下java的null類型強轉
java中的null值是可以強制轉換為任何java類型的,就像(String)null是合法的,但null強轉后的是無效對象,其返回值還是為null,但是例如下面這種情況
public class NULL {
public static void main(String[] args) {
((NULL)null).haha();
}
public static void haha(){
System.out.println("haha");
}
}
輸出為
haha
原因是static方法的調用是和類名綁定的,不借助對象進行訪問,所以能夠正確輸出,如果沒有加上static修飾,就會報空指針的錯誤了
總結
以上所述是小編給大家介紹的Java中對null進行強制類型轉換,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
關于JAVA11中圖片與BASE64相互轉換的實現(xiàn)
這篇文章主要介紹了關于JAVA11中圖片與BASE64相互轉換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Java+Springboot搭建一個在線網(wǎng)盤文件分享系統(tǒng)
本主要介紹了通過springboot+freemark+jpa+MySQL實現(xiàn)的在線網(wǎng)盤文件分享系統(tǒng),其功能跟百度網(wǎng)盤非常類似,可以實現(xiàn)文件的上傳、移動、復制、下載等,需要的可以參考一下2021-11-11
spring boot 加載web容器tomcat流程源碼分析
本文章主要描述spring boot加載web容器 tomcat的部分,為了避免文章知識點過于分散,其他相關的如bean的加載,tomcat內部流程等不做深入討論,具體內容詳情跟隨小編一起看看吧2021-06-06

