解決Map集合使用get方法返回null拋出空指針異常問題
前言
1.Map里面只能存放對(duì)象,不能存放基本類型,例如int,需要使用Integer
2.Map集合取出時(shí),如果變量聲明了類型,會(huì)先進(jìn)行拆箱,再進(jìn)行轉(zhuǎn)換。
空指針問題
如圖,在程序執(zhí)行到27行時(shí),出現(xiàn)了空指針異常.按道理來講,對(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出來的可能是個(gè)空,拿著個(gè)參數(shù)做處理前一定要判斷,或者用getOrDefault
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)熱部署Community的示例代碼
本文主要介紹了SpringBoot實(shí)現(xiàn)熱部署Community的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06java的Array,List和byte[],String相互轉(zhuǎn)換的方法你了解嘛
這篇文章主要為大家詳細(xì)介紹了java的Array,List和byte[],String相互轉(zhuǎn)換的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02Quartz實(shí)現(xiàn)JAVA定時(shí)任務(wù)的動(dòng)態(tài)配置的方法
這篇文章主要介紹了Quartz實(shí)現(xiàn)JAVA定時(shí)任務(wù)的動(dòng)態(tài)配置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07從零構(gòu)建可視化jar包部署平臺(tái)JarManage教程
這篇文章主要為大家介紹了從零構(gòu)建可視化jar包部署平臺(tái)JarManage教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05java編程FinalReference與Finalizer原理示例詳解
這篇文章主要為大家介紹了java編程FinalReference與Finalizer的核心原理以及示例源碼的分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01