java陷阱之自动拆箱
生活随笔
收集整理的這篇文章主要介紹了
java陷阱之自动拆箱
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目中突然報空指針異常
Integer code=null;code=code==null?500:code;
排查發現三元運算符空指針異常,表面上看不出來有什么問題,編譯器編譯的時候會保證:2邊數據類型一致如:
String code=true?"":0; 會編譯不通過。因為String?和int不是一個類型
按照上面的邏輯Integer是class類型并不是數值類型 編譯器應該編譯不通過。其實編譯之后編譯器后的代碼是:
ccode=code==null?500:code.initValue();
所以這段代碼才會編譯通過。但是當code是null 調用initValue就會報空指針異常
同理以下代碼也會報空指針異常
Integer code=null;int i=code;
--編譯之后代碼
int i=code.initValue()
?
這一切的原因都是編譯器自動拆箱造成的。如下情況?價格是否為null判斷就好了?
?
?
轉載于:https://www.cnblogs.com/LQBlog/p/9090647.html
總結
以上是生活随笔為你收集整理的java陷阱之自动拆箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery 实现Json节点的增删改查
- 下一篇: centos 6.8 启动损坏修复实验