解决Map集合使用get方法返回null抛出空指针异常问题
作者:krisqiu 发布时间:2023-11-25 00:14:00
标签:Map,get,null,空指针
前言
1.Map里面只能存放对象,不能存放基本类型,例如int,需要使用Integer
2.Map集合取出时,如果变量声明了类型,会先进行拆箱,再进行转换。
空指针问题
如图,在程序执行到27行时,出现了空指针异常.按道理来讲,对于Map集合是有Key和Value的,Collection集合是只有Value。如果执行get()方法,当不存在key时,对应的应该返回null。
map.get(s.charAt(i));
因此 由于不存在key“)”,应该返回null
但是却报了空指针异常。
原因
map.get(s.charAt(i));
会先返回数据原本类型Character,当数据为null时,拆箱转成null将抛出空指针异常。
以下同理
进行if判断时,map.get()方法会将取出的Character转成表达式同类型的变量,由于是null 拆箱成char时将会抛异常。
map.get,小心get出一个空指针
map.get,get出来的可能是个空,拿着个参数做处理前一定要判断,或者用getOrDefault
来源:https://blog.csdn.net/Darrenchiu/article/details/100713881


猜你喜欢
- 数组概述 C# 数组从零开始建立索引,即数组索引从零开始。C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起
- 首先我们看看为什么需要对象复制?为什么需要对象复制如上,是我们平时开发中最常见的三层MVC架构模型,编辑操作时Controller层接收到前
- package org.itat.stax;import java.io.IOException;import java.io.InputS
- 一、简介构造函数,基本用法是在类对象声明的时候完成初始化工作。二、实例构造函数1、构造函数的名字与类名相同。2、使用 new 表达式创建类的
- 可空类型用途主要是从数据库读取数据有可能为空,而不是插入使用,插入数据都要进行验证,如果要插入数据库的null,则使用DBNull.valu
- 一、牵出缓存都有哪些缓存,作用是什么,为什么这么设计1.缓存还在屏幕内的ViewHolder——Sc
- 在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬。那怎样开发Androi
- 本文实例讲述了Android基于SoftReference缓存图片的方法。分享给大家供大家参考,具体如下:Java中的SoftReferen
- 当CLR未能分配所需的足够内存时,将发生System.OutOfMemoryException。System.OutOfMemoryExce
- 本文实例为大家分享了C++实现哈夫曼树的编码解码,供大家参考,具体内容如下代码:#pragma once#include<iostre
- Android 中倒计时验证两种常用方式实例详解短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用。看图:说明:这里的及时从10开始
- 被覆盖比较好理解,类似于多态的实现,访问时通过类方法表来访问,你实际是什么类型,访问的方法就是那个类型的方法而不会是你的父类的方法。被隐藏是
- Java.lang 中自带的注解@Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,
- Android 使用mediaplayer播放res/raw文件夹中的音乐的实例(1)在res文件夹中新建一个文件夹重命名为raw,并且将要
- 如下所示:Ctrl+1或F2快速修复Ctrl+D快捷删除行Shift+Enter 快速切换到下一行,在本行的任何位置都可Ctrl+F11快速
- 1、使用FileStream读写文件 文件头:using System;using System.Collections.Gene
- using System;using System.Collections.Generic;using System.Globalizati
- RecyclerView上拉加载,先看效果:网上有很多这类得框架,不过在自己的项目只用到上拉加载的功能,所以自己封装一个简单点的。主要依赖B
- 1 分布式1.1 什么是分布式分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。这
- 1. 选择恰当的日志级别常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日