日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Java和甜蜜的科学

發(fā)布時(shí)間:2023/12/3 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java和甜蜜的科学 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)您使用Java進(jìn)行開發(fā)已有15年并且同事要求您幫助他們調(diào)試空指針異常時(shí),您不會感到驚訝。 通常,很明顯什么是null,唯一要做的就是找出原因。

有時(shí)會有些困難,因?yàn)橛腥藙?chuàng)建了一系列取消引用的對象。 前幾天,我遇到了一些新東西,并感到困惑了一段時(shí)間。 用Java調(diào)試最簡單的事情之一就是一時(shí)的神秘感。

考慮下面的代碼,并告訴我空指針異常在哪里:

return value;

沒錯(cuò),NPE被拋出一個(gè)簡單的return語句。

怎么會這樣 沒有明顯的取消引用。 沒有引用為空。 那句話很簡單。 讓我稍微擴(kuò)展一下代碼視圖,以便您更好地了解發(fā)生了什么:

public int getValue(){return value;}

再一次,我們正在看非常簡單的代碼。 在上面的代碼和文章標(biāo)題中的提示之間,您可能已經(jīng)知道發(fā)生了什么,或者您可能更加困惑。 再次沒有明確地取消引用。 不僅我們甚至沒有處理引用,它還返回一個(gè)原語。

您從線索中找出來了嗎? 好的,這是其余的代碼和說明:

package Example; publicclass Example {Integer value;public int getValue(){return value;} }

注意,value是一個(gè)以大寫I表示的Integer,而getValue返回int。

在Java 5之前的過去,您會在上述代碼上遇到編譯錯(cuò)誤。 但是Java 5引入了自動裝箱 。 這個(gè)功能在我的Java職業(yè)生涯中已經(jīng)存在了將近一半,并且從未使我感到困惑或困惑。 它一直是一個(gè)方便的功能。

自動裝箱允許在基元及其等效的第一類對象之間進(jìn)行無縫轉(zhuǎn)換。 因此,您無需分配value.intValue即可獲取原語,而只需分配值即可。 但是在幕后它仍然調(diào)用intValue方法。

那就是NPE發(fā)生的地方。 有問題的行變?yōu)?#xff1a;

return value.intValue();

在那條線上,很明顯NPE發(fā)生在哪里。

哦,萬一有人錯(cuò)過它,那么體育拳擊運(yùn)動就叫做Sweet Science。 我覺得自己被Autoboxing吸引住了,因此是本文的名稱。

翻譯自: https://www.javacodegeeks.com/2014/10/java-and-the-sweet-science.html

總結(jié)

以上是生活随笔為你收集整理的Java和甜蜜的科学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。