- 你遇见过三木运算符的空指针吗?
NPE 异常是我们日常开发中最常见的一种异常情况,但在三目运算符中出现确实不是很常见,各位可以看下如下实例:
Java
public static void action1(){
boolean flag = true; // 设置成 true,保证条件表达式的表达式二一定可以执行
boolean simpleBoolean = false; // 定义一个基本数据类型的 boolean 变量
Boolean nullBoolean = null;// 定义一个包装类对象类型的 Boolean 变量,值为 null
boolean x = flag ? nullBoolean : simpleBoolean; // 使用三目运算符并给 x 变量赋值
}
大佬们觉得以上代码执行的结果会是什么?
没错,会抛出 NPE 异常。
这个问题还得回顾下三目运算符和自动拆装箱的概念,有兴趣了吧?系好安全带,发车了!
< 表达式 1> ? < 表达式 2> : < 表达式 3>
以上便是三目运算符的写法形式,通过 ?和 :组合的形式得到一个条件表达式。其中 ?运算符的含义是:先求表达式 1 的值,如果为真,则执行并返回表达式 2 的结果;如果表达式 1 的值为 假,则执行并返回表达式 3 的结果。
那自动拆装箱呢?还是直接代码说话吧。
Java
Integer i = 10; //自