Viv*_*wal -1 java default-value
Integer i = null;
int j = i;
System.out.println(j);
Run Code Online (Sandbox Code Playgroud)
为什么它抛出NullPointerException并且不打印jas的值0?
Integer是一个对象。因此它是可以为空的。
Integer i = null;
Run Code Online (Sandbox Code Playgroud)
是正确的。
int另一方面,是一个原始值,因此不能为空。
int j = i;
Run Code Online (Sandbox Code Playgroud)
相当于
int j = null;
Run Code Online (Sandbox Code Playgroud)
这是不正确的,并抛出一个NullPointerException.
感谢 JNYRanger 的扩展:
这种从原始值对象包装器到其原始等价物的隐式转换称为“拆箱”,并且只要对象持有非空值,就会起作用。
Integer i = 12;
int j = i;
System.out.println(j);
Run Code Online (Sandbox Code Playgroud)
按预期输出 12。
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |