1. 程式人生 > >讓一個物件=另一個物件,修改一個物件的值,如何不影響另一個的值

讓一個物件=另一個物件,修改一個物件的值,如何不影響另一個的值

我有一個自己作的class(LinkedStack),然後聲明瞭兩個物件LinkedStack temp = new LinkedStack();LinkedStack Path。

但是,當我用temp = Path;把path的值給了temp以後;我對temp進行一些刪除,但是path裡面的值也沒了。

請問如何把path的值賦給temp,但是修改temp的時候不影響path。

答案:定義的每一個類都是引用型別,當一個例項複製給另一個例項的時候,就是你的temp=path,實際上是把path所指向的記憶體地址空間傳遞給了temp,所以當temp進行操作改變的時候,path也就發生了改變,因為兩個變數好比一個房間的兩把鑰匙,無論誰用鑰匙進去改變了房間中的物品,然後用另外一把鑰匙進去看到的肯定是改變後的房間。

所以,對於引用型別,就要使用克隆賦值,即temp=path.clone();它標誌著按照path所指向的地址房間,重新建造了一個一模一樣的房間,並把鑰匙給了temp。假設原來的path所指向的地址是1000000,那麼temp就可能為1010000了。
不知道我這個解釋你能不能明白。其實上面幾位都解釋得很正確了。