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类
public int intValue() {
return value;
}
哦明白了
Integer x = null;
int a = x.intValue(); // NullPointerException because x is null
怪不得断点也没进去直接抛异常