解決Map集合使用get方法返回null拋出空指針異常問(wèn)題
前言
1.Map里面只能存放對(duì)象,不能存放基本類型,例如int,需要使用Integer
2.Map集合取出時(shí),如果變量聲明了類型,會(huì)先進(jìn)行拆箱,再進(jìn)行轉(zhuǎn)換。
空指針問(wèn)題

如圖,在程序執(zhí)行到27行時(shí),出現(xiàn)了空指針異常.按道理來(lái)講,對(duì)于Map集合是有Key和Value的,Collection集合是只有Value。如果執(zhí)行g(shù)et()方法,當(dāng)不存在key時(shí),對(duì)應(yīng)的應(yīng)該返回null。
map.get(s.charAt(i));
因此 由于不存在key“)”,應(yīng)該返回null
但是卻報(bào)了空指針異常。
原因
map.get(s.charAt(i));會(huì)先返回?cái)?shù)據(jù)原本類型Character,當(dāng)數(shù)據(jù)為null時(shí),拆箱轉(zhuǎn)成null將拋出空指針異常。
以下同理

進(jìn)行if判斷時(shí),map.get()方法會(huì)將取出的Character轉(zhuǎn)成表達(dá)式同類型的變量,由于是null 拆箱成char時(shí)將會(huì)拋異常。
map.get,小心get出一個(gè)空指針
map.get,get出來(lái)的可能是個(gè)空,拿著個(gè)參數(shù)做處理前一定要判斷,或者用getOrDefault
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nacos集群模式下服務(wù)無(wú)法注冊(cè)問(wèn)題
這篇文章主要介紹了Nacos集群模式下服務(wù)無(wú)法注冊(cè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Spring生命周期回調(diào)與容器擴(kuò)展詳解
這篇文章主要介紹了Spring生命周期回調(diào)與容器擴(kuò)展詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
一文詳解Java中的可變對(duì)象(Mutable)與不可變對(duì)象(Immutable)
如何在 Java 中創(chuàng)建不可變對(duì)象?我以前以為所有對(duì)象都是不可變的,因?yàn)槿绻愀淖円粋€(gè) String 實(shí)例的內(nèi)容,它總是會(huì)創(chuàng)建一個(gè)新的 String 對(duì)象并指向該對(duì)象,在本文中,我不僅將分享在 Java 中Immutable的步驟,還將討論可變對(duì)象與不可變對(duì)象及其優(yōu)缺點(diǎn)2023-11-11
分析設(shè)計(jì)模式之模板方法Java實(shí)現(xiàn)
所謂模板方法模式,就是一個(gè)對(duì)模板的應(yīng)用,就好比老師出試卷,每個(gè)人的試卷都是一樣的,這個(gè)原版試卷就是一個(gè)模板,可每個(gè)人寫在試卷上的答案都是不一樣的,這就是模板方法模式。它的主要用途在于將不變的行為從子類搬到超類,去除了子類中的重復(fù)代碼2021-06-06
SpringSecurity?表單登錄的實(shí)現(xiàn)
本文主要介紹了SpringSecurity?表單登錄的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

