Integer转int报错空指针异常NullPointerException/NumberFormatException
Integer.parseInt
常见的错误,如以下这种代码:
String str = obj.getVar();
//obj.getVar()的结果为 null,以下代码会报错
int age = Integer.parseInt(str);
Integer.parseInt(null) 会报错 NumberFormatException: null 。
可以使用 apache commons-lang3包的 NumberUtils 工具类来避免这类问题。
String str = null;
int age = NumberUtils.toInt(str);
map.get
首先看以下这段代码,结果会输出什么?
Map<String, Integer> map = new HashMap<>();
int age = map.get("abc");
System.out.println(age);
结果既不是0,也不是 null。。
而是报了空指针。map返回的Integer为 null,而null 无法转换成 int,所以报错空指针。
注意,装箱类型,在声明时最好不要用拆箱类型,避免因为null而出现异常。
如果一定要使用拆箱类型,可以使用map的 getOrDefault 来设置 value 为null时取的默认值,如下:
Map<String, Integer> map = new HashMap<>();
int age = map.getOrDefault("abc", 0);
System.out.println(age);
结论
这个问题挺基础的,但是有时在项目中还是会看到这种代码,写代码还是得细心一些。
分类:
其他--java
, A1-java代码块积累
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了