黑马程序员技术交流社区
标题:
内存分析时一点不明白的地方
[打印本页]
作者:
黄达标
时间:
2011-12-11 18:07
标题:
内存分析时一点不明白的地方
本帖最后由 达达。 于 2011-12-11 23:00 编辑
新建 BMP 图像.jpg
(1.2 MB, 下载次数: 47)
下载附件
2011-12-11 18:07 上传
作者:
周胜
时间:
2011-12-11 18:38
0x0012是一段地址。。Car c1 = c;是将c这个对象的引用的地址给c1。有了这个地址c1和c就指向堆里的同一个对象了。。
作者:
杨玉揆
时间:
2011-12-11 18:42
其实你上面都写的很清楚了 c1存放的只是一个16进制的地址值,而不是放一段代码。
作者:
吴上储
时间:
2011-12-11 18:58
Car c = new Car(); 创建了一个新对象 Car 将0x0012这段代码赋给c
Car c1 =c; 你要是看不懂 可以 这么看
Car c1; 现在 c1是一个空的 Car类型 对象
c1 = c; c是有内容的Car类型 对象 两个类型一个 c的内容可以 给c
作者:
黄达标
时间:
2011-12-11 20:54
汗。。把它当成基本数据类型的赋值方式来看了,引用数据类型的赋值就是赋值地址。谢谢你们的回答!
作者:
武超
时间:
2011-12-11 20:55
首先你要明白,Car c = new Car ();是创建一个引用指向新建对象的地址,也就是c指向0x0012。
其次,你要知道‘=’是将c的地址赋值给了新创建的c1,现在c1指向的就是c所指向的地址0x0012。
还有0x0012这个不是代码 而是16进制的内存地址。其实就和int a=3; int b=a;一样,不同的是你不能直接指定地址而已。你能说3是代码吗?我不认为它是代码,我只认为它是一个数值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2