关于Java中 因取消装箱可能产生 'NullPointerException' 的原因

一.什么是装箱,什么是拆箱?

装箱:将值类型转换为引用数据类型。

拆箱:将引用数据类型转换为值类型。

  说白了就是 Integer与int数据类型之间的转换

二.为什么会有自动一说呢?

我们都知道,java是一个面向对象的语言。因此包括数字、字符、日期、布尔值等等再内的一切都是对象。但是对于cpu来说,要处理一个对象是很费时费力的过程,同时对于内存来说,也是一个很占用内存的过程。因此为了简化这些过程,就发明了一种自动拆箱自动装箱的过程。当我们执行一些基本数据类型就能完成的操作时,java会自动将他转化为基本数据类型,这个过程也叫拆箱。执行完后又自动装箱,恢复引用数据类型。举例:

 

这段代码中,当执行到userId<=20时,也就是当执行到逻辑运算符时,java会自动拆箱转变为long类型。执行完后又自动装箱成Long。

一般的当要执行一些简单且功能单一的操作时会进行自动拆箱操作。譬如:逻辑运算 + - * /  if for while 等等。

 

那么我们就要考虑到一个问题,引用数据类型是可以为null,但 基本数据类型是不可以的,所以就会出现这类报错:空指针报错

因此在要执行一些自动装箱操作前要做一次判null操作。

 

posted @ 2024-06-30 18:42  又混一天  阅读(9)  评论(0编辑  收藏  举报