[问题] 产生class的reference?

楼主: k80092 (游)   2015-12-27 18:55:25
最近初学java,在看thinking in java(中译本)这本书。
其中有个练习题这么写着“续上题,产生Dog的reference并将它指派至
表示"spot"的object。请分别使用==以及equals()来比较所有的reference”
我知道作者希望我学会的东西,产生一个class的object我知道,
但是所谓产生一个class的reference是怎么一回事呢?
我搞不太懂...可否请教一下大家:(
谢谢各位~
作者: icydream (巧虎)   2015-12-27 20:27:00
Dog spot = new Dog(); spot 就是一个reference,它参考到new Dog()这个instance上。
楼主: k80092 (游)   2015-12-27 22:28:00
可是Dog spot=new Dog();我在上一题已经做过一次了,他写说是产生Dog的object,所以我才疑惑到底是...?还是其实“产生Dog的object”不是Dog spot = new Dog();?
作者: fgh81113 (阿景)   2015-12-27 23:18:00
没意外的话题目应该是想要叫你测试 == 和 equals的差异Dog xx;xx = spot;System.out.println(xx == spot);System.out.println(xx.equals(spot));
楼主: k80092 (游)   2015-12-27 23:24:00
是的,只是我不懂他叫我产生一个Dog的reference去跟spot做
作者: fgh81113 (阿景)   2015-12-27 23:25:00
这样? 老实说有上一题我还是看不懂
楼主: k80092 (游)   2015-12-27 23:25:00
做比较,所以这个所谓产生reference跟产生object是不同的意思吗?其实这本书的练习题我有一些无法意会他的题意,但也苦无解答可以参考:(
作者: fgh81113 (阿景)   2015-12-27 23:27:00
这题很奇怪 name没用到要你打印出来 是不是翻译有问题
楼主: k80092 (游)   2015-12-27 23:30:00
这我也不知道~囧>
作者: illegalplan (illegal plan)   2015-12-27 23:42:00
Dog xx;是一个Dog的reference 尚未指名任何instancexx = spot;现在有三个reference 有两个instance如果使用 xx == spot 是比较两个reference使用指向同一个instance比较reference是否指向同一个instancexx跟spot指向同一个Dog的instance所以==运算子结果会是true,equals则视你实作内容而定至于产生一个reference这说法,经过编译最佳化后,没办法保证Dog xx到底有没有被配置空间。garbage collection会提到更多两者的关系查询equals跟==会得到更多有关这题的资料
楼主: k80092 (游)   2015-12-29 09:28:00
嗯嗯,谢谢各位详细的说明!

Links booklink

Contact Us: admin [ a t ] ucptt.com