java 科学计数_Java和甜蜜的科学
java 科學計數(shù)
當您使用Java進行開發(fā)已有15年之久,并且一位同事要求您幫助他們調(diào)試空指針異常時,您不會感到驚訝。 通常,很明顯什么是null,唯一要做的就是找出原因。
有時會有些困難,因為有人創(chuàng)建了一系列取消引用的對象。 前幾天,我遇到了一些新東西,并感到困惑了一段時間。 用Java調(diào)試最簡單的事情之一就是一時的神秘感。
考慮下面的代碼,并告訴我空指針異常在哪里:
沒錯,NPE被拋出一個簡單的return語句。
怎么會這樣 沒有明顯的取消引用。 沒有引用為空。 那句話很簡單。 讓我稍微擴展一下代碼視圖,以便您更好地了解發(fā)生了什么:
public int getValue(){return value;}再一次,我們正在看非常簡單的代碼。 在上面的代碼和文章標題中的提示之間,您可能已經(jīng)知道發(fā)生了什么,或者您可能更加困惑。 再次沒有明確地取消引用。 不僅我們甚至沒有處理引用,它還返回一個原語。
您從線索中找出來了嗎? 好的,這是其余的代碼和說明:
package Example; publicclass Example {Integer value;public int getValue(){return value;} }注意,value是一個以大寫I表示的Integer,而getValue返回int。
在Java 5之前的過去,您會在上述代碼上遇到編譯錯誤。 但是Java 5引入了自動裝箱 。 這個功能在我的Java職業(yè)生涯中已經(jīng)存在了將近一半,并且從未使我感到困惑或困惑。 它一直是一個方便的功能。
自動裝箱允許在基元及其等效的第一類對象之間進行無縫轉換。 因此,您無需分配value.intValue即可獲取原語,而只需分配值即可。 但是在幕后它仍然調(diào)用intValue方法。
那就是NPE發(fā)生的地方。 有問題的行變?yōu)?#xff1a;
return value.intValue();在那條線上,很明顯NPE發(fā)生在哪里。
哦,萬一有人錯過它,那么體育拳擊運動就叫做Sweet Science。 我覺得自己像被Autoboxing吸引住了,因此是這篇文章的名字。
翻譯自: https://www.javacodegeeks.com/2014/10/java-and-the-sweet-science.html
java 科學計數(shù)
總結
以上是生活随笔為你收集整理的java 科学计数_Java和甜蜜的科学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火炬之光1电脑游戏(火炬之光端游)
- 下一篇: 电脑cpu上使用的硅脂(电脑cpu用什么