Integer为null赋值给int变量会报java.lang.NullPointerException的思考

注意,该图中断点一行代码会报空指针异常

Integer为null赋值给int变量会报java.lang.NullPointerException的思考_第1张图片

放过断点后如下图

Integer为null赋值给int变量会报java.lang.NullPointerException的思考_第2张图片 

这个问题困扰我一晚上。正常来讲,我以为是PageHelper是null之类导致的。

后来才弄明白。原来是因为

Integer为null赋值给int变量会报java.lang.NullPointerException的思考_第3张图片 

PageHelper.starPaeg的参数,需要是int类型。

在传入实参是值为null的时候。会报java.lang.NullPointerException。

但是为什么呢?正常来讲不都应该是某个值为null调用了某方法,才会报这样的NullPointerException异常。

其实是因为Interger类型值为null,默认调用了自己的自动拆箱方法null.intValue(),转为int

Integer为null赋值给int变量会报java.lang.NullPointerException的思考_第4张图片Integer为null赋值给int变量会报java.lang.NullPointerException的思考_第5张图片

这样就清楚为啥是报这个空指值异常了。

下面这篇文章分析的很到位,我就不重复了,大致总结就是3种情况,

1.赋值 如 int  a = null

2.方法传参,本文中例子就是。

3.比较大小。int a = 1; Interger b = null; if (a == b){} 

当然也包括其它包装类,这里以Interger举例。

参考如下:

https://rongmayisheng.com/tag/integer抛空指针/

 

你可能感兴趣的:(java)