public class TestBox {
Integer i;
int j;
public static void main (String[] args) {
TestBox t = new TestBox();
t.go();
}
public void go() {
j = i;
System.out.println(j);
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我在线上得到一个空指针异常j=i.
虽然如果这条线被转换为i=j我得到输出,因为0 0它是int的默认值.
我的问题是,什么时候i被分配j,不应该i取消装箱作为一个int变量,并取默认值0而不是其原来的默认空值?
编译器会转换此分配
j = i;
Run Code Online (Sandbox Code Playgroud)
......进入这个:
j = i.intValue( );
Run Code Online (Sandbox Code Playgroud)
如果i为null,则获得NPE.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |