其他分享
首页 > 其他分享> > 三元运算符报空指针问题

三元运算符报空指针问题

作者:互联网

一、三元运算符与自动拆箱有关系,导致了空指针

三目运算符condition? 表达式1:表达式2中,表达式1和2在类型对齐时,可能抛出因自动拆箱导致的空指针异常
以下两种场景会触发类型对齐的拆箱操作

错误写法:

        Integer a = 1;
        Integer b = 33333;
        Integer c = null;
        Boolean flag  = false;
        Integer result = (flag ? a * b : c);
        log.info("{}====",result);

首先判断flag,如果为true,则计算ab值,否则计算c值,ab值是int类型,c是Integer类型,c会拆箱,null.intValue(); 此处会报空指针异常。

正确写法:

        Integer a = 1;
        Integer b = 33333;
        Integer c = null;
        Boolean flag  = false;
        Integer result = (flag ? Integer.valueOf(a * b) : c);
        log.info("{}====",result);

二、三元运算符
对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。多级运算顺序 a?b:c?d:e将按a?b:(c?d:e)

标签:拆箱,运算符,flag,result,报空,Integer,表达式,指针
来源: https://blog.csdn.net/LYF_wait_you/article/details/116406607