NullPointerException in ternary operator

java代码:
Integer i = null;
Integer x = true ? i : 1;
 
assembly code:
public static void main(java.lang.String[]);
  Code:
   Stack=1, Locals=3, Args_size=1
   0:   aconst_null
   1:   astore_1
   2:   aload_1
   3:   invokevirtual   #2; //Method java/lang/Integer.intValue:()I
   6:   invokestatic    #3; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Int
eger;
   9:   astore_2
   10:  return
 
如果说是将null转化为基本类型时报的空指针,那就是在调用Integer.intValue:()时发生的,但是在此方法内没有看出可以报空指针的地方

可以看下Integer类
public int intValue() {
    return value;
}
 
哦明白了
Integer x = null;  
int a = x.intValue();  // NullPointerException because x is null
 
怪不得断点也没进去直接抛异常

你可能感兴趣的:(NullPointerException in ternary operator)