还是不能理解Cat two = one;求解答

还是不能理解Cat two = one;求解答

我是这么想的:one代表花花及其相关属性,two代表凡凡及其相关属性。从赋值的思路来分析:Cat two = one;应该是two的值全部替换成one的值了呀,那应该输出的就是两个花花了,为什么会输出两个凡凡呢?总是想不通

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
吃吃吃鱼的猫 2019-03-26 19:27:17

同学你好,当执行Cat two = one;Cat three = two;时,三个引用one,two,three指向同一个对象,如下图所示,所以当最后将对象赋值为“团团”时,输出应为“团团,团团,团团”。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!http://img1.sycdn.imooc.com//climg/5c9a0bf80001328506310158.jpg

  • 提问者 慕粉2337217088 #1
    应该是三个对象指向堆中的同一片内存空间吧
    2019-03-26 19:40:44
  • 吃吃吃鱼的猫 回复 提问者 慕粉2337217088 #2
    同学你好,不是的。Cat one;这时是声明了对象引用,引用存放在栈中。new Cat();创建对象,对象存放在堆中,“=”使引用指向真正的对象,所以,这里one,two,three是三个引用指向同一个对象哦~如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-03-27 09:29:52
吃吃吃鱼的猫 2019-03-26 16:01:35

同学你好,在two=one执行后,此时两个引用指向同一个对象。当执行one.setName("花花");后,又执行了two.setName("凡凡");操作,所以,此时对象的输出是两个凡凡。http://img1.sycdn.imooc.com//climg/5c99dc3b000113e007360632.jpg如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕粉2337217088 #1
    懂了,你的意思是最后赋值为啥,最后两个对象就会输出啥,是这个意思吗?如果还有第三个猫团团的话,Cat two = one;Cat three = two;运行这两行代码后,是不是会输出:凡凡,团团,团团?
    2019-03-26 16:27:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师