A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gaara 高级黑马   /  2013-1-26 16:04  /  1826 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-27 13:43 编辑

Students[] stu = new Students[3];这么写是不是对数组本身实例化?

stu[0]=new Students();是不是对数组中的元素实例化?

还有 这两句在内存中是怎么回事那??

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

8 个回复

倒序浏览
画了个内存图,你参考参考

未命名.PNG (31.8 KB, 下载次数: 23)

未命名.PNG

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 很给力!

查看全部评分

回复 使用道具 举报
黄锦成 发表于 2013-1-26 16:29
画了个内存图,你参考参考

貌似懂了  又貌似没懂  先谢谢你了!!  我怎么就画不出来那!!!!
回复 使用道具 举报
Students[] stu = new Students[3];这一步叫实例化,实例化是只在内存中给对象分配一个存储空间,不是指赋值。
students[0]=new Student();这个的意思就是创造了一个Student类型的数据,并装入数组的第一个元素位引用类型的数据都是在堆上开辟空间,如果是null值,则是未开辟空间,这时候,这个类型的数据实际上是不存在的,也就是空指针,如果你直接使用他的字段,会抛空指针异常.
new Students();会在堆上生成一个对象,消耗一个对象的空间;stu[0]是对象的一个引用,一个引用消耗的空间就是一个Int数据,很小的,;stu[0]=XXX 表示的是让这个引用指向XXX对象.

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
张文彬 发表于 2013-1-26 18:02
貌似懂了  又貌似没懂  先谢谢你了!!  我怎么就画不出来那!!!!

这个我也纠结了挺长时间的,弄了很久才弄清楚了。这个你可以看毕老师基础视频中画的内存图
回复 使用道具 举报
洪建超 发表于 2013-1-26 18:09
Students[] stu = new Students[3];这一步叫实例化,实例化是只在内存中给对象分配一个存储空间,不是指赋 ...

看你这个  再结合上面那个图  貌似又懂点了  我再琢磨琢磨  谢谢!!
回复 使用道具 举报
Gaara 高级黑马 2013-1-26 18:38:29
7#
黄锦成 发表于 2013-1-26 18:31
这个我也纠结了挺长时间的,弄了很久才弄清楚了。这个你可以看毕老师基础视频中画的内存图 ...

恩  谢谢了  我再好好看看
回复 使用道具 举报
第一个解释的不错
回复 使用道具 举报
Gaara 高级黑马 2013-1-27 14:22:33
9#
Hmtimetravel 发表于 2013-1-26 22:15
第一个解释的不错

这个你都懂 。。。。。哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马