int []和Integer []数组-有什么区别?

考虑以下基础:

  1. 任何Object人只能活在堆里
  2. 阵列IS-A Object
  3. Integer IS-A Object

我发现自己很难回答这样一个简单的问题: int[]Integer[] 有什么区别吗?还是仅在“编译时”才有意义?

回答:

运行时有所不同。

int[]是原始int值的数组。Integer[]是一个“对象”数组,其中包含对Integer对象的引用。

最重要的实际差异:int[]无法持有null价值观。

但是我仍然很困惑:是否int[]仅存储原始值?如果是这样,这是否意味着原始类型可以不封装就可以存在于堆中?

int[]确实存储原始类型。数组本身位于堆中。但是,这些原语被分配为数组的一部分。它们不会单独存储在堆中的其他位置。这与原始字段是对象实例的一部分的方式非常相似:该对象在堆上,并且其字段是该对象的组成部分(而对于非原始字段,只有引用存储在该对象内部引用所指向的目标实例分别存储在堆中)。

您可以说int数组中的“包裹”了。

以上是 int []和Integer []数组-有什么区别? 的全部内容, 来源链接: utcz.com/qa/407601.html

回到顶部