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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄达标 黑马帝   /  2011-12-11 18:07  /  1944 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 达达。 于 2011-12-11 23:00 编辑

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1 淡定

查看全部评分

5 个回复

倒序浏览
周胜 黑马帝 2011-12-11 18:38:09
沙发
0x0012是一段地址。。Car c1 = c;是将c这个对象的引用的地址给c1。有了这个地址c1和c就指向堆里的同一个对象了。。
回复 使用道具 举报
其实你上面都写的很清楚了 c1存放的只是一个16进制的地址值,而不是放一段代码。

评分

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

查看全部评分

回复 使用道具 举报
Car c = new Car(); 创建了一个新对象   Car 将0x0012这段代码赋给c
Car c1 =c; 你要是看不懂 可以 这么看
Car c1;  现在 c1是一个空的 Car类型 对象
    c1 = c;  c是有内容的Car类型 对象   两个类型一个  c的内容可以 给c

评分

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

查看全部评分

回复 使用道具 举报
汗。。把它当成基本数据类型的赋值方式来看了,引用数据类型的赋值就是赋值地址。谢谢你们的回答!
回复 使用道具 举报
武超 黑马帝 2011-12-11 20:55:20
地板
首先你要明白,Car c = new Car ();是创建一个引用指向新建对象的地址,也就是c指向0x0012。
其次,你要知道‘=’是将c的地址赋值给了新创建的c1,现在c1指向的就是c所指向的地址0x0012。

还有0x0012这个不是代码 而是16进制的内存地址。其实就和int a=3; int b=a;一样,不同的是你不能直接指定地址而已。你能说3是代码吗?我不认为它是代码,我只认为它是一个数值。

评分

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

查看全部评分

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