楼主:
k80092 (游)
2015-12-27 18:55:25最近初学java,在看thinking in java(中译本)这本书。
其中有个练习题这么写着“续上题,产生Dog的reference并将它指派至
表示"spot"的object。请分别使用==以及equals()来比较所有的reference”
我知道作者希望我学会的东西,产生一个class的object我知道,
但是所谓产生一个class的reference是怎么一回事呢?
我搞不太懂...可否请教一下大家:(
谢谢各位~
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();?
没意外的话题目应该是想要叫你测试 == 和 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做
楼主:
k80092 (游)
2015-12-27 23:25:00做比较,所以这个所谓产生reference跟产生object是不同的意思吗?其实这本书的练习题我有一些无法意会他的题意,但也苦无解答可以参考:(
这题很奇怪 name没用到要你打印出来 是不是翻译有问题
楼主:
k80092 (游)
2015-12-27 23:30: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嗯嗯,谢谢各位详细的说明!