黑马程序员技术交流社区

标题: 类创建的实例对象可不可以用指针来理解? [打印本页]

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

是不是很像指针?
作者: 匿名    时间: 2011-8-9 00:21
一直以为这个东西就是一个指针,只不过这一点对于开发者来说是透明的,你不用像c那样对它进行操作,就把它当成对象操作就行了,然后你操作的其实是它所指向的那个对象
作者: 冯龙辉    时间: 2011-8-9 01:09
标题: 回复 楼主 的帖子
我的理解是:java中虽然没有指针的概念,但它的存在的方式变了,它被面向对象化了,所以啊指针在java中摇身一变,变成了对象的引用了。
[ 本帖最后由 fenglh 于 2011-08-09  01:11 编辑 ]
作者: 匿名    时间: 2011-8-9 01:15
只能说类似于指针,它不能像指针一样随便移动(改变在内存中的位置),或者可以用个更形象的叫法:句柄(handle){有些书早期版本上有这个称呼,后期出于某些原因不再使用这一称呼而改为最初的称呼,引用},不过在java里面叫引用是最恰当的
作者: 匿名    时间: 2011-8-9 07:36
标题:
哦,:lol ,有些明白了,谢谢
作者: 匿名    时间: 2011-8-9 08:31
标题: 想法
指针可以移动,创建一个实例对象,就分配一块内存,创建好多对象,就占用很多内存,相比一个指针移动,更加容易些,这也许就是面向对象的思想吧,本来现实生活中资源就是有限的,不同的生物都要占用资源啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2