以下內容首發於我的個人博客網站:
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); // 正常執行
}
}