三目运算符在我们日常的开发中使用的也是非常的多,那么针对于三目运算符发现了如下空指针问题:
举例:
Double i = null;
Double result=false ?0: i //java.lang.NullPointerException
如上图案例,三目运算符条件为false,执行后者时会出现空指针异常
原因简单的来说就是:当第二,第三位操作数分别为基本类型和对象时,其中的对象就会拆箱为基本类型进行操作。
编译为:Double result=false ?0.intValue(): i.intValue()
由于0为基本数据类型int,所以在拆箱过程中调用0.intValue()和null.intValue()进行操作的时候就报了NPE
解决方法:
//方法一
Double i = null;
Double result=false ?Double.valueOf(0) : i;
//方法二
Double i = null;
Double result=false ?new Double(0) : i;