作者k80092 (游)
看板java
标题[问题] 一个reference的小问题
时间Sun Dec 27 18:55:25 2015
最近初学java,在看thinking in java(中译本)这本书。
其中有个练习题这麽写着「续上题,产生Dog的reference并将它指派至
表示"spot"的object。请分别使用==以及equals()来比较所有的reference」
我知道作者希望我学会的东西,产生一个class的object我知道,
但是所谓产生一个class的reference是怎麽一回事呢?
我搞不太懂...可否请教一下大家:(
谢谢各位~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 115.179.117.100
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1451213727.A.853.html
1F:推 icydream: Dog spot = new Dog(); spot 就是一个reference,它参 12/27 20:27
2F:→ icydream: 考到new Dog()这个instance上。 12/27 20:27
3F:→ k80092: 可是Dog spot=new Dog();我在上一题已经做过一次了,他写 12/27 22:28
4F:→ k80092: 说是产生Dog的object,所以我才疑惑到底是...? 12/27 22:29
5F:→ k80092: 还是其实「产生Dog的object」不是Dog spot = new Dog();? 12/27 22:33
在这里补上前一题的题目
撰写名为Dog的class,并使其内含两个Strings:name以及says。在
main()中,请分别产生两个Dog的object,并将其命名为"spot"(使其
之says值为"Ruff!")以及"scruffy"(使其says之值为"Wurf!")。接
着印出其name及says。
※ 编辑: k80092 (115.179.117.100), 12/27/2015 22:39:13
6F:→ fgh81113: 没意外的话题目应该是想要叫你测试 == 和 equals的差异 12/27 23:18
7F:→ fgh81113: Dog xx; 12/27 23:23
8F:→ fgh81113: xx = spot; 12/27 23:23
9F:→ fgh81113: System.out.println(xx == spot); 12/27 23:24
10F:→ fgh81113: System.out.println(xx.equals(spot)); 12/27 23:24
11F:→ k80092: 是的,只是我不懂他叫我产生一个Dog的reference去跟spot做 12/27 23:24
12F:→ fgh81113: 这样? 老实说有上一题我还是看不懂 12/27 23:25
13F:→ k80092: 做比较,所以这个所谓产生reference跟产生object是不同的 12/27 23:25
14F:→ k80092: 意思吗? 12/27 23:25
15F:→ k80092: 其实这本书的练习题我有一些无法意会他的题意,但也苦无 12/27 23:27
16F:→ k80092: 解答可以参考:( 12/27 23:27
17F:→ fgh81113: 这题很奇怪 name没用到要你列印出来 是不是翻译有问题 12/27 23:27
18F:→ k80092: 这我也不知道~囧> 12/27 23:30
19F:→ illegalplan: Dog xx;是一个Dog的reference 尚未指名任何instance 12/27 23:42
20F:→ illegalplan: xx = spot;现在有三个reference 有两个instance 12/27 23:43
21F:→ illegalplan: 如果使用 xx == spot 是比较两个reference使用指向同 12/27 23:44
22F:→ illegalplan: 一个instance 12/27 23:44
23F:→ illegalplan: 比较reference是否指向同一个instance 12/27 23:44
24F:→ illegalplan: xx跟spot指向同一个Dog的instance所以==运算子结果会 12/27 23:49
25F:→ illegalplan: 是true,equals则视你实作内容而定 12/27 23:52
26F:→ illegalplan: 至於产生一个reference这说法,经过编译最佳化後,没 12/28 00:17
27F:→ illegalplan: 办法保证Dog xx到底有没有被配置空间。 12/28 00:18
28F:→ illegalplan: garbage collection会提到更多两者的关系 12/28 00:19
29F:→ illegalplan: 查询equals跟==会得到更多有关这题的资料 12/28 00:19
30F:→ k80092: 嗯嗯,谢谢各位详细的说明! 12/29 09:28