java-基础知识-三目运算符-NPE异常

1.NPE异常

三目运算符: exp1?val1:val2;      

exp1为true 返回 val1  反之 exp1=false   返回 val2

        int i=0;
boolean flag=false;
Integer j=null;

// ************正常输出*****************
// Integer k=flag?j:i;
// 相当于下式
// Integer k = Integer.valueOf(flag ? j.intValue() : i);
// System.out.println(k);
//
// ***************NullPointerException*******NPE异常*********
// 在开发过程重点注意包装类型的自动拆箱问题
// 当表达式2与表达式3分别是基本类型和其包装类,包装类将自动拆箱 引发NPE异常
// 最好保持 表达式2 与表达式3 的类型一致
// Integer l=flag?i:j;
// Integer l = Integer.valueOf(flag ? i : j.intValue());
// System.out.println(j.intValue());

val1 与val2 类型相同,直接返回。
val1 与val2 类型不同 ,例如 i为int,j为integer 当返回值为j时,包装类转为基本类型 j.intValue() 。
所以返回j时,会出现NullPointerException。



posted @ 2020-06-05 13:28  雨后星辰zxj  阅读(289)  评论(0)    收藏  举报