教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

java.lang.NullPointerException_java空指針異常解決方法

更新時(shí)間:2020年09月25日11時(shí)21分 來(lái)源:傳智播客 瀏覽次數(shù):

這個(gè)異常大家肯定都經(jīng)常遇到,異常的解釋是;程序遇上了空指針,簡(jiǎn)單地說(shuō)就是調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象,這個(gè)錯(cuò)誤經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯(cuò)誤等等。對(duì)數(shù)組操作中出現(xiàn)空指針,很多情況下是一些剛開(kāi)始學(xué)習(xí)編程的朋友常犯的錯(cuò)誤,即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來(lái)了。數(shù)組的初始化是對(duì)數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒(méi)有實(shí)例化,依然是空的,所以還需要對(duì)每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)。

java.lang.NullPointerException具體意思是空指針異常。以下是7條出現(xiàn)“java.lang.NullPointerException”異常的原因。

1、字符串等數(shù)據(jù)類(lèi)型沒(méi)有初始化
2、接口類(lèi)型的對(duì)象沒(méi)有用具體的類(lèi)初始化,比如:

List lt; 會(huì)報(bào)錯(cuò)
List lt = new ArrayList(); 則不會(huì)報(bào)錯(cuò)了

3、當(dāng)一個(gè)對(duì)象的值為空時(shí),沒(méi)有判斷是否為空。
4、字符串與文字的比較,文字可以是一個(gè)字符串或Enum的元素,如下會(huì)出現(xiàn)異常

String str = null;
if(str.equals(“Test”)){
//這里的代碼將不會(huì)被觸發(fā),因?yàn)闀?huì)拋出java.lang.NullPointerException異常。
}

5、優(yōu)先使用String.valueOf()方法代替toString()
當(dāng)程序代碼需要對(duì)象的字符串表示形式時(shí),請(qǐng)避免使用該對(duì)象的toString方法。如果你的對(duì)象的引用等于null,NullPointerException則會(huì)拋出,使用靜態(tài)String.valueOf方法,該方法不會(huì)拋出任何異常并打印”null”
6、class被聲明了類(lèi)型, 默認(rèn) class = null; 這樣在調(diào)用class中方法的時(shí)候系統(tǒng)只能給你個(gè)空指針異常, 給其實(shí)例化就好了:class = new Class();
7、返回null,方法的返回值不要定義成為一般的類(lèi)型,而是用數(shù)組。這樣如果想要返回null的時(shí)候就能避免許多不必要的NullPointerException

總之,NullPointerException由RuntimeException派生出來(lái),是一個(gè)運(yùn)行時(shí)異常。其意指可能會(huì)在運(yùn)行的時(shí)候才會(huì)被拋出,一個(gè)變量是null,及只有其名,沒(méi)有實(shí)值內(nèi)容,也沒(méi)分配內(nèi)存,當(dāng)你要去取他的長(zhǎng)度,對(duì)他進(jìn)行操作就會(huì)出現(xiàn)NullPointException,所以聲明變量時(shí)最好給它分配好內(nèi)存空間,給予賦值,例如拿該變量與一個(gè)值比較時(shí),要么先做好該異常的處理要么給它進(jìn)行判斷先: if (str !=null && str “”){ …}
判斷一個(gè)String的實(shí)例s是否等于“a”時(shí),不要寫(xiě)成s.equals(“a”),這樣容易拋NullPointerException,而寫(xiě)成”a”.equals(s)就可以避免這個(gè)問(wèn)題,不過(guò)對(duì)變量先進(jìn)行判空后再進(jìn)行操作更好,盡量避免返回null,方法的返回值不要定義成為一般的類(lèi)型,用數(shù)組。這樣如果想要返回null的時(shí)候,就返回一個(gè)沒(méi)有元素的數(shù)組。就能避免許多不必要的NullPointerException。**

猜你喜歡
Java培訓(xùn)之Struts最常見(jiàn)的異常錯(cuò)誤
Java培訓(xùn)之java難點(diǎn)解析(十一)-異常

0 分享到:
和我們?cè)诰€交談!