java对象数组的动态初始化问题

 我来答
绳淑敏谢亥
2020-01-28 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:24%
帮助的人:1154万
展开全部
room[]
rooms
=
new
room[5];
你只是创建了一个room数组对象和该数组对象的引用,并指定该数组对象的容量是5个room对象,系统在堆内存里只会为你分配该room数组对象所占用的空间,这样做是为了节约内存,需要用到的时候才会分配相应的空间存储room对象(也就是你主动初始化)。这就像你申请要买个能装5个room的盒子,但是你没说要买room啊(没初始化room数组对象里的内容),所以此时room数组对象里面是没有room对象的,也就是说rooms.length为0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宋玉芬在书
2019-11-30 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.5万
采纳率:35%
帮助的人:1024万
展开全部
我的理解时这样的:
当Person
per[]
=
new
Person[3];这句代码执行时,系统会申明一个数组变量,并指向三个地址,但是地址中是没有值的。
per[0]
=
new
Person("张三");当执行到这句代码时,系统会将其中数组地址中索引为0的地址赋值,值为对象(Person('张三')),而并不是String内存空间。
并且你贴出来的这两句代码中只会执行一次new操作
也就是只会为其中一个对象的name赋值字符串“张三”
我觉得不会涉及到两块String内存空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式