我声明了一个布尔变量。例如Boolean dataVal=null;
现在,如果我执行以下代码段:
if(dataVal)
System.out.println("\n\NULL value in dataVal: "+dataVal);
else
System.out.println("\n\nvalue in dataVal: "+dataVal);
我得到NULLPointerException。那么,我知道它很明显,但我需要知道背后的原因。
发布于 2018-03-08 13:27:29
当您评估Boolean
对象Java 的布尔值时,取消该值(自动装箱功能,自1.5开始)。所以真正的代码是:dataVal.booleanValue()
。然后它抛出NullPointerException
。对于任何装箱值,拆开空对象将引发此异常。
在1.5之前,你必须手动取消这个值:if (dataVal.booleanValue())
所以它更明显(更详细:)
发布于 2018-03-08 14:36:19
因为dataVal
被转换为boolean
使用Boolean.booleanValue()
哪个被转换为null.booleanValue()
哪个会导致您发生NullPointerException。
https://stackoverflow.com/questions/-100007545
复制相似问题