[問題] 產生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