一.什么是装箱,什么是拆箱?
装箱:将值类型转换为引用数据类型。
拆箱:将引用数据类型转换为值类型。
说白了就是 Integer与int数据类型之间的转换
二.为什么会有自动一说呢?
我们都知道,java是一个面向对象的语言。因此包括数字、字符、日期、布尔值等等再内的一切都是对象。但是对于cpu来说,要处理一个对象是很费时费力的过程,同时对于内存来说,也是一个很占用内存的过程。因此为了简化这些过程,就发明了一种自动拆箱自动装箱的过程。当我们执行一些基本数据类型就能完成的操作时,java会自动将他转化为基本数据类型,这个过程也叫拆箱。执行完后又自动装箱,恢复引用数据类型。举例:
这段代码中,当执行到userId<=20时,也就是当执行到逻辑运算符时,java会自动拆箱转变为long类型。执行完后又自动装箱成Long。
一般的当要执行一些简单且功能单一的操作时会进行自动拆箱操作。譬如:逻辑运算 + - * / if for while 等等。
那么我们就要考虑到一个问题,引用数据类型是可以为null,但 基本数据类型是不可以的,所以就会出现这类报错:空指针报错
因此在要执行一些自动装箱操作前要做一次判null操作。
标签:拆箱,Java,数据类型,自动,引用,执行,装箱,NullPointerException From: https://www.cnblogs.com/y12123/p/18276805