推 icydream: Dog spot = new Dog(); spot 就是一個reference,它參 12/27 20:27
→ icydream: 考到new Dog()這個instance上。 12/27 20:27
→ k80092: 可是Dog spot=new Dog();我在上一題已經做過一次了,他寫 12/27 22:28
→ k80092: 說是產生Dog的object,所以我才疑惑到底是...? 12/27 22:29
→ 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
→ fgh81113: 沒意外的話題目應該是想要叫你測試 == 和 equals的差異 12/27 23:18
→ fgh81113: Dog xx; 12/27 23:23
→ fgh81113: xx = spot; 12/27 23:23
→ fgh81113: System.out.println(xx == spot); 12/27 23:24
→ fgh81113: System.out.println(xx.equals(spot)); 12/27 23:24
→ k80092: 是的,只是我不懂他叫我產生一個Dog的reference去跟spot做 12/27 23:24
→ fgh81113: 這樣? 老實說有上一題我還是看不懂 12/27 23:25
→ k80092: 做比較,所以這個所謂產生reference跟產生object是不同的 12/27 23:25
→ k80092: 意思嗎? 12/27 23:25
→ k80092: 其實這本書的練習題我有一些無法意會他的題意,但也苦無 12/27 23:27
→ k80092: 解答可以參考:( 12/27 23:27
→ fgh81113: 這題很奇怪 name沒用到要你列印出來 是不是翻譯有問題 12/27 23:27
→ k80092: 這我也不知道~囧> 12/27 23:30
→ illegalplan: Dog xx;是一個Dog的reference 尚未指名任何instance 12/27 23:42
→ illegalplan: xx = spot;現在有三個reference 有兩個instance 12/27 23:43
→ illegalplan: 如果使用 xx == spot 是比較兩個reference使用指向同 12/27 23:44
→ illegalplan: 一個instance 12/27 23:44
→ illegalplan: 比較reference是否指向同一個instance 12/27 23:44
→ illegalplan: xx跟spot指向同一個Dog的instance所以==運算子結果會 12/27 23:49
→ illegalplan: 是true,equals則視你實作內容而定 12/27 23:52
→ illegalplan: 至於產生一個reference這說法,經過編譯最佳化後,沒 12/28 00:17
→ illegalplan: 辦法保證Dog xx到底有沒有被配置空間。 12/28 00:18
→ illegalplan: garbage collection會提到更多兩者的關係 12/28 00:19
→ illegalplan: 查詢equals跟==會得到更多有關這題的資料 12/28 00:19
→ k80092: 嗯嗯,謝謝各位詳細的說明! 12/29 09:28