【发布时间】:2013-10-30 22:54:09
【问题描述】:
这是我上一个问题的延续,并根据这个问题的答案Declaration of wrapper classes
Java 将原始数据类型包装到包装类中,那么为什么
char c = null; // invalid
int i = null; // invalid
不允许,但是
Character cObj = null; // valid
Integer iObj = null; // valid
是允许的。
【问题讨论】:
-
因为原始类型不能是
null。 -
因为整数值为空,所以总是为 0 并且永远不会为空。 (在 int 的情况下)
-
@qqilihq :) 这就是我的问题,为什么?正如 java 包装那么为什么 java 不包装原始数据类型并允许
null值 -
原始数据类型存储在堆栈上,而对象分配在堆上,因此一个对象可以有一个空引用。
-
@VineetKasat 感谢 vineet 的回复,您的回复提出了一个问题,为什么我不能为存储在堆栈中的原始数据类型设置空值,我什至可以在堆栈的值中分配空值,我正在阅读一篇文章,其中将大小小于 64 的数组存储在堆栈内存中。这意味着我还可以为存储在堆栈内存中的数据类型分配空值。