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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

类创建的实例对象可不可以用指针来理解?这样就可以映射到具体的物理内存中,好理解。
堆内存用于存储对象实例
相对与栈内存而言,堆内存的优势体现在程序运行时动态为对象分配内存空间来存储对象实例,内存容量的大小也是根据对象大小来动态划分的。当内存回收器检测到程序对某个对象已经没有任何引用的时候则动态回收该对象的内存空间。这种动态的内存划分和回收机制所带来的灵活性也直接影响到了数据的存取速度。
Object obj1 = new Object();
Object obj2 = new Object();
采用new关键字创建对象时,即为目标对象在堆内存中划分了内存空间和分配了内存大小,并返回该目标对象的内存地址给对象类型的变量obj1引用。obj2变量也引用了另外一个保存在堆内存中对象实例。当然obj1和obj2所引用的内存地址是不同的。

是不是很像指针?

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 问的好!

查看全部评分

5 个回复

正序浏览
黑马网友  发表于 2011-8-9 08:31:37
地板

想法

指针可以移动,创建一个实例对象,就分配一块内存,创建好多对象,就占用很多内存,相比一个指针移动,更加容易些,这也许就是面向对象的思想吧,本来现实生活中资源就是有限的,不同的生物都要占用资源啊
回复 使用道具 举报
黑马网友  发表于 2011-8-9 07:36:12
报纸

哦,:lol ,有些明白了,谢谢
回复 使用道具 举报
黑马网友  发表于 2011-8-9 01:15:05
板凳
只能说类似于指针,它不能像指针一样随便移动(改变在内存中的位置),或者可以用个更形象的叫法:句柄(handle){有些书早期版本上有这个称呼,后期出于某些原因不再使用这一称呼而改为最初的称呼,引用},不过在java里面叫引用是最恰当的

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 像王兄学习!

查看全部评分

回复 使用道具 举报

回复 楼主 的帖子

我的理解是:java中虽然没有指针的概念,但它的存在的方式变了,它被面向对象化了,所以啊指针在java中摇身一变,变成了对象的引用了。
[ 本帖最后由 fenglh 于 2011-08-09  01:11 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-9 00:21:51
沙发
一直以为这个东西就是一个指针,只不过这一点对于开发者来说是透明的,你不用像c那样对它进行操作,就把它当成对象操作就行了,然后你操作的其实是它所指向的那个对象

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马