int []和Integer []数组-有什么区别?
考虑以下基础:
- 任何
Object
人只能活在堆里 - 阵列IS-A
Object
和 Integer
IS-AObject
我发现自己很难回答这样一个简单的问题: int[]
和Integer[]
有什么区别吗?还是仅在“编译时”才有意义?
回答:
运行时有所不同。
int[]
是原始int值的数组。Integer[]
是一个“对象”数组,其中包含对Integer对象的引用。
最重要的实际差异:int[]
无法持有null
价值观。
但是我仍然很困惑:是否
int[]
仅存储原始值?如果是这样,这是否意味着原始类型可以不封装就可以存在于堆中?
int[]
确实存储原始类型。数组本身位于堆中。但是,这些原语被分配为数组的一部分。它们不会单独存储在堆中的其他位置。这与原始字段是对象实例的一部分的方式非常相似:该对象在堆上,并且其字段是该对象的组成部分(而对于非原始字段,只有引用存储在该对象内部引用所指向的目标实例分别存储在堆中)。
您可以说int
数组中的“包裹”了。
以上是 int []和Integer []数组-有什么区别? 的全部内容, 来源链接: utcz.com/qa/407601.html