三元运算符导致的空指针异常 发表于 2022-03-20 分类于 编程 文章字数:156,阅读全文大约需要1分钟 今天看《阿里巴巴java开发手册》时看到了一个有意思的空指针异常 123456Integer a = 1; Integer b = 2; Integer c = null; Boolean flag = false; // a*b 的结果是 int 类型,那么 c 会强制拆箱成 int 类型,抛出 NPE 异常 Integer result=(flag? a*b : c); 在三元运算符中 条件 ? 表达式1 : 表达式2如果表达式1和表达式2存在类型对齐,那么可能因此造成空指针异常。如上面的代码,表达式1的结果是int类型,然后表达式2的结果也对齐拆箱成int,然而变量c的值是空,于是抛出NPE