日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Java中NullPointerException異常的原因詳解以及解決方法

瀏覽:130日期:2022-08-27 13:17:52

NullPointerException是當您嘗試使用指向內存中空位置的引用(null)時發生的異常,就好像它引用了一個對象一樣。

當我們聲明引用變量(即對象)時,實際上是在創建指向對象的指針。考慮以下代碼,您可以在其中聲明基本類型的整型變量x:

int x;x = 10;

在此示例中,變量x是一個整型變量,Java將為您初始化為0。當您在第二行中將其分配給10時,值10將被寫入x指向的內存中。

但是,當您嘗試聲明引用類型時會發生不同的事情。請使用以下代碼:

Integer num;num = new Integer(10);

第一行聲明了一個名為的變量num,但它不包含原始值。相反,它包含一個指針(因為類型Integer是一個引用類型)。既然你還沒有說什么指向Java,它將它設置為null,意思是“ 我什么都沒有指向”。

在第二行中,new關鍵字用于實例化(或創建)Integer類型的對象,并為指針變量num分配此對象。您現在可以使用解引用運算符.(點)來引用對象。

在當你聲明了一個變量,但是沒有創建一個對象,會發生Exception。如果您在創建num對象之前嘗試取消引用,則會得到一個NullPointerException。在最瑣碎的情況下,編譯器將捕獲問題并讓您知道“num可能尚未初始化”,但有時您編寫的代碼不會直接創建對象。

例如,您可能使用了如下的方法:

public void doSomething(SomeObject obj) { //do something to obj}

在這種情況下,您沒有創建對象obj,而是假設它是在doSomething調用方法之前創建的。如果你像這樣調用方法:

doSomething(null);

在這種情況下obj為null。如果該方法旨在對傳入的對象執行某些操作,則需要拋出異常,因為NullPointerException它是程序錯誤,程序員將需要該信息用于調試的目的。

或者,可能存在這樣的情況:該方法的目的不僅僅是對傳入的對象進行操作,因此可以接受空參數。在這種情況下,您需要檢查null參數并采取不同的行為。您還應該在文檔中解釋這一點。例如,doSomething應該最好寫成:

/** * @param obj An optional foo for ____. May be null, in which case * the result will be ____. */public void doSomething(SomeObject obj) { if(obj != null) { //do something } else { //do something else }}

我如何解決它?

所以你有一個NullPointerException。應該如何解決?讓我們舉一個簡單的例子,它拋出NullPointerException:

public class Printer { private String name; public void setName(String name) { this.name = name; } public void print() { printString(name); } private void printString(String s) { System.out.println(s + ' (' + s.length() + ')'); } public static void main(String[] args) { Printer printer = new Printer(); printer.print(); }}

標識空值

第一步是確切地確定導致異常的值。為此,我們需要做一些調試。學習閱讀堆棧跟蹤很重要。這將顯示拋出異常的位置:

Exception in thread 'main' java.lang.NullPointerException at Printer.printString(Printer.java:13) at Printer.print(Printer.java:9) at Printer.main(Printer.java:19)

在這里,我們看到在第13行拋出異常(在printString方法中)。查看該行并通過添加日志記錄語句或使用調試器來檢查哪些值為空。我們發現它s是null,并且調用length方法會拋出異常。我們可以看到程序在s.length()方法中刪除時停止拋出異常。

追蹤這些值來自哪里

接下來檢查此值的來源。按照該方法的調用者,我們可以看到,s與傳遞printString(name)的print()方法,并this.name為空。

跟蹤應設置這些值的位置

在哪里this.name設置?在setName(String)方法中。通過一些更多的調試,我們可以看到根本沒有調用此方法。如果調用該方法,請確保檢查調用這些方法的順序,并且在print方法之后不調用set 方法。

這足以為我們提供一個解決方案:在調用printer.setName()之前添加調用printer.print()。

其他修正

該變量可以具有默認值(并且setName可以防止將其設置為null):

private String name = '';

任一print或printString方法可以檢查空,例如:

printString((name == null) ? '' : name);

或者您可以設計如下所示的類,以便name 始終具有非null值:

public class Printer { private final String name; public Printer(String name) { this.name = Objects.requireNonNull(name); } public void print() { printString(name); } private void printString(String s) { System.out.println(s + ' (' + s.length() + ')'); } public static void main(String[] args) { Printer printer = new Printer('123'); printer.print(); }}

到此這篇關于詳解Java中NullPointerException異常的原因詳解以及解決方法的文章就介紹到這了,更多相關Java NullPointerException異常內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品qvod| 国产日韩欧美中文在线| 国产综合激情| 精品久久影院| 国产精品极品国产中出| 日本免费新一区视频| 亚洲精品九九| 国产精品自拍区| 国产美女高潮在线| 亚洲成人va| 丝袜美腿高跟呻吟高潮一区| 蜜臀国产一区二区三区在线播放| 亚洲黄页一区| 欧美在线91| 日韩大片在线播放| 亚洲在线一区| 国产免费av国片精品草莓男男 | 波多野结衣一区| 日韩av在线播放网址| 婷婷国产精品| 清纯唯美亚洲综合一区| 福利精品在线| 亚洲精选久久| 国产成人免费视频网站视频社区| 色偷偷色偷偷色偷偷在线视频| 91精品国产91久久久久久黑人| 99国产成+人+综合+亚洲欧美| 日韩欧美四区| 久久青草久久| 国产精品草草| 久久亚洲视频| 国产欧美精品久久| 91九色精品国产一区二区| 欧美亚洲三区| 国产亚洲精品久久久久婷婷瑜伽| 国产精品网址| 亚洲网址在线观看| 亚洲精品一区三区三区在线观看| 日韩成人一级| 欧美特黄一级| 国产精品xx| 日韩高清一区在线| 国产一区日韩一区| 国产h片在线观看| 日韩欧美三区| 性欧美精品高清| 久久av网站| 亚洲精品系列| 免费在线看一区| 欧美/亚洲一区| 亚洲不卡av不卡一区二区| 激情不卡一区二区三区视频在线| 日韩精品91亚洲二区在线观看| 亚洲一本视频| 精品一区免费| 九色精品91| 亚洲在线免费| 热久久免费视频| 亚洲人成高清| 97久久超碰| 国产精品国码视频| 日本91福利区| 国产欧美二区| 精品日产乱码久久久久久仙踪林| 国产精品二区影院| 久久精品国产99国产精品| 精品在线网站观看| 伊人久久视频| 性欧美69xoxoxoxo| 久久亚洲美女| 日韩av中文字幕一区| 国产三级精品三级在线观看国产| 国产精品色婷婷在线观看| 免费在线观看一区| 亚洲成人av观看| 国产一级久久| 国产精一区二区| 国产欧美一区二区三区国产幕精品 | 精品国产精品久久一区免费式| 国产激情综合| 999精品在线| 欧美特黄视频| 欧美日韩一区二区三区不卡视频 | 国产不卡精品| 欧美亚洲国产一区| 美女尤物久久精品| 国产精品亚洲欧美| 久草免费在线视频| 日本欧洲一区二区| 国产精品久久久久久久久久白浆| а√天堂8资源在线| 午夜在线视频观看日韩17c| 亚洲精品在线a| 久久毛片亚洲| 日韩精品欧美大片| 日韩久久精品| 日韩精品一区二区三区免费视频| 四虎国产精品免费观看| 在线观看视频免费一区二区三区| 成人黄色av| 亚洲精品亚洲人成在线观看| 正在播放日韩精品| 国产精品亚洲综合色区韩国| 久久aⅴ国产紧身牛仔裤| 国产中文欧美日韩在线| 亚洲毛片一区| 久久国产福利| 日韩欧美一区二区三区在线视频 | 中文字幕av一区二区三区四区| 国产一区二区三区成人欧美日韩在线观看| 九色精品91| 婷婷成人在线| 色偷偷色偷偷色偷偷在线视频| 日韩av三区| 亚洲三级毛片| 亚洲综合小说| 蜜桃av一区二区在线观看| 99精品视频精品精品视频| 欧美国产先锋| 国产精品久久久久久久久久久久久久久 | 香蕉久久久久久| 99久久精品费精品国产| 国产精品任我爽爆在线播放 | 精品视频99| 亚洲一区二区三区免费在线观看| 亚洲专区视频| 99国产精品私拍| 国精品一区二区三区| 亚洲网站视频| 日韩视频在线一区二区三区 | 日韩啪啪电影网| 日韩久久视频| 日韩午夜黄色| 日韩一区免费| 国产视频网站一区二区三区| 久久国产人妖系列| 免费av一区| 亚洲激情黄色| 五月亚洲婷婷| 国产精品99久久免费| 精品久久视频| 午夜国产精品视频免费体验区| av一区二区高清| 日韩一区精品| 91亚洲国产| 在线视频亚洲| 国产欧美日韩| 99久久夜色精品国产亚洲1000部| 影音先锋国产精品| 欧美精品中文| 欧美在线观看视频一区| 色8久久久久| 久久精品国产精品亚洲毛片| 日韩欧美精品一区| 亚洲天堂日韩在线| 涩涩av在线| 日韩三级精品| 久久久精品日韩| 国产精品一级在线观看| 欧美二区视频| 精品日韩在线| 中文字幕成人| 久久久久午夜电影| 国产精品亚洲片在线播放| 久久久久国产| 国产精品sm| 在线精品观看| 另类专区亚洲| 国产亚洲人成a在线v网站| 欧美精品激情| av高清一区| 国产精品极品国产中出| 国产精品婷婷| 亚洲日本网址| 麻豆高清免费国产一区| 午夜电影一区| 丝袜美腿亚洲色图| 91精品91| 欧美成人国产| 日韩精品水蜜桃| 国产成人精品一区二区三区在线| 日韩精品1区2区3区| re久久精品视频| 亚洲91久久| 久久精品免费一区二区三区| 日韩一区亚洲二区| 亚洲精品**中文毛片| 电影91久久久| 久久伊人亚洲| 免费一级欧美片在线观看网站 | 91亚洲国产| 国产欧美日韩在线观看视频| 亚州av一区| 精品视频网站| 国产suv精品一区| 中文字幕色婷婷在线视频| 日韩久久电影| 久久一区二区中文字幕| 亚洲成人一区在线观看| 日韩精品欧美|