Java新手数组技术咨询:创建对象数组时会发生什么?
对象数组创建的本质解析
嘿,这个问题问到点子上了,很多刚接触对象数组的开发者都会在这里绕晕~先直接给结论:正确选项是d,下面我逐个拆解每个选项帮你彻底搞懂:
核心原理先明确
当你用类似 SomeClass[] arr = new SomeClass[10]; 这样的代码创建对象数组时,JVM会做这两件事:
- 分配一块内存空间,用来容纳10个
SomeClass类型的对象引用(注意,是引用,不是对象本身) - 把每个引用位置的初始值设为
null(因为引用类型的默认初始值是null)
现在来看每个选项:
- 选项a:错误。对象数组的元素是引用类型,初始值只会是
null,0是基本类型数组(比如int[])的初始值,这里混淆了基本类型和引用类型数组的初始化逻辑。 - 选项b:错误。创建数组的过程完全不会自动关联程序里之前创建的任何对象,这些引用位置一开始都是空的,只有你手动赋值(比如
arr[0] = new SomeClass();)后,才会指向具体对象。 - 选项c:错误。数组里存储的是对象的引用,不是对象本身;而且也不会自动包含之前创建的对象,完全是空白的引用容器。
- 选项d:正确。数组本质就是一个存储引用的容器,创建时只是开辟了对应数量的引用存储位置,这些位置的内容(也就是指向的对象)是未填充的(初始为null,相当于“内容未完整”),需要你后续手动赋值来完善。
内容的提问来源于stack exchange,提问作者lupul666
相关产品推荐
相关产品推荐

