[問題] 傳物件問題

作者: ptt0720 (濕濕)   2017-12-24 03:02:26
大家都知道java傳物件是傳參考
但是剛才遇到一個問題
我把某個物件c1傳到某個方法A 在A裡面把另外一個同型態的物件assignment給c1(不是物件成員 是整個物件)
但是在原本呼叫A的方法中c1還是c1
物件的成員可以這樣子assignment
但是今天才知道整個物件不能這樣子assignment
想請問有人知道在java內部是如何運作的嗎
(怕觀念有誤馬上用手機問一下 如果不明白的話我會在補上code)
作者: ssccg (23)   2017-12-24 03:23:00
java傳物件不是傳參考,是複製一份參考(在C/C++中叫指標的)方法中的變數(不論數值類型還是參考類型)怎麼改都不影響呼叫的地方
作者: ptt0720 (濕濕)   2017-12-24 03:39:00
但是我在方法中改物件的成員變數 實際上也被改變了
作者: ssccg (23)   2017-12-24 03:56:00
物件的成員變數是物件的成員變數,不是方法的區域變數
作者: jej (晃奶大馬桶)   2017-12-24 06:43:00
http://javadude.com/articles/passbyvalue.htm你給的那個已經是另一個instance
作者: pttworld (批踢踢世界)   2017-12-24 07:38:00
想像手中本來有個箭頭指某一物件,換指另一物件。
作者: LPH66 (-6.2598534e+18f)   2017-12-24 12:48:00
接樓上的比喻, 函式外的箭頭跟函式內的箭頭不是同一個
作者: ptt0720 (濕濕)   2017-12-26 02:26:00
懂了 謝謝各位

Links booklink

Contact Us: admin [ a t ] ucptt.com