gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:25:47 25 4
gpt4 key购买 nike

考虑以下基础知识:

  1. 任何对象仅存在于堆上,
  2. 数组是一个对象
  3. 整数 IS-A 对象

我发现自己很难回答这样一个简单的问题:int[]Integer[]之间有什么区别JVM内部 ?或者它只在“编译时”才有意义?

最佳答案

运行时存在差异。

int[] 是原始 int 值的数组。 Integer[] 是一个“对象”数组,保存对 Integer 对象的引用。

最重要的实际区别:int[] 不能保存 null 值。

But I'm still confused: does int[] store just a primitive values? If so - doesn't it mean that primitive types can live on heap without being wrapped?

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

您可以说 int 被“包装”在数组内。

关于java - int[] 和 Integer[] 数组 - 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com