以下内容首发于我的个人博客网站:
http://riun.xyz
在Java的三目运算符中,当存在运算时,如果返回的是Integer类型就会触发拆箱,此时如果返回的Integer是null,那么就会抛出NullPoint异常(拆箱,将null转化为数字,无法转化)。
package Test;
/**
* @author: HanXu
* on 2020/4/22
* Class description:
*/
public class Demo4 {
/**
三目运算符:
condition ? 表达式 1 : 表达式 2
表达式 1 和 2 在涉及算术计算或数据类型转换时,会触发自动拆箱。
*/
public static void main2(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = false;
Integer result = (flag ? a : c); // 正常执行
}
public static void main3(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = false;
Integer result = (flag ? a * b : c); //当存在运算时(只需存在即可触发拆箱),抛出NullPointerException异常(将Integer类型的null拆箱成int数字,失败)
}
public static void main4(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = true;
Integer result = (flag ? c : a * b); // 抛出异常
}
public static void main5(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = false;
Integer result = (flag ? c : a * b); // 正常执行
}
public static void main(String[] args) {
String a = "111";
String b = "222";
String c = null;
Boolean flag = true;
String result = (flag ? c : a + b); // 正常执行
}
}