作者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/m.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