关于Java中 因取消装箱可能产生 'NullPointerException' 的原因
一.什么是装箱,什么是拆箱?
装箱:将值类型转换为引用数据类型。
拆箱:将引用数据类型转换为值类型。
说白了就是 Integer与int数据类型之间的转换
二.为什么会有自动一说呢?
我们都知道,java是一个面向对象的语言。因此包括数字、字符、日期、布尔值等等再内的一切都是对象。但是对于cpu来说,要处理一个对象是很费时费力的过程,同时对于内存来说,也是一个很占用内存的过程。因此为了简化这些过程,就发明了一种自动拆箱自动装箱的过程。当我们执行一些基本数据类型就能完成的操作时,java会自动将他转化为基本数据类型,这个过程也叫拆箱。执行完后又自动装箱,恢复引用数据类型。举例:
这段代码中,当执行到userId<=20时,也就是当执行到逻辑运算符时,java会自动拆箱转变为long类型。执行完后又自动装箱成Long。
一般的当要执行一些简单且功能单一的操作时会进行自动拆箱操作。譬如:逻辑运算 + - * / if for while 等等。
那么我们就要考虑到一个问题,引用数据类型是可以为null,但 基本数据类型是不可以的,所以就会出现这类报错:空指针报错
因此在要执行一些自动装箱操作前要做一次判null操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通