java连续三元运算符提示报错,以及有报错风险

关于三元运算符

在三目运算符java开发的环境下可以简单的理解为双目运算符的类型转换问题(便于理解)。其具体规则总结如下:
  1)如果定义了数据类型的变量与未定义变量的数值共同参与三元运算符的后双目运算,,那么返回的结果就是范围大            (精度高)类型
  2)如果两个定义了数据类型的变量共同参与三元运算符的后双目运算,那么返回的结果就是范围大(精度高)类型
  3)如果直接进行数值的比较,会自动转型成为范围大(精度高)的数据类型

这里涉及到三元运算符,以及自动拆包,妥妥的暗坑多亏了idea的强大才发现

代码如下

public class m2 {
    public static void main(String[] args) {
        Integer num = (int) (10 * Math.random());

        Integer status1 = num == 11 ? 1 : null;                                         // 通过
        Integer status2 = num == 12 ? Integer.valueOf(2) : num == 13 ? 3 : null;      // 通过
        Integer status3 = num == 14 ? 1
                : num == 13 ? 3
                : num == 12 ? 2
                : null;                                                                  // 报错
        // null的地方底层应该进行了这样的逻辑运算导致报错
        Integer A = null;
        int a = A.intValue();  // 这里报错
    }
}

idea提醒如下 Unboxing of ‘null’ may produce ‘NullPointerException’

在这里插入图片描述
运行报错如下
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" at m2.main(m2.java:11)

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值