Re: [問題] 新手問題

看板java作者 (小安)時間14年前 (2011/08/05 12:45), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串6/8 (看更多)
※ 引述《peacedove (林帛亨加油!!!)》之銘言: : ※ 引述《singlovesong (~"~)》之銘言: : : String a = new String("Test String!"); : : String b = a; : : 想請問 : : 這樣子的意思是什麼意思呢? : : 是把a 的reference 複製給b : : 還是把a的內容複製給b 前者。 : : 如果是前者的話 那麼從a改內容 是不是b"指"到的這個String 也會更著改 理論上: 是。 不過因為對象是 String,具有 immutable 特性, 沒有辦法去修改 a (所指向的 String) 的內容, 所以實際上是做不到這樣的事情。 如果把 String 換成其他 mutable 的物件, 因為 a 跟 b 其實指到的是 "同一個物件", 修改了 a (所指向的物件),自然也會影響到 b (所指向的物件), 而不是 "修改 a,b 也會跟者改"。 : 然後因為 immutable 的關係,所以你改動其中一個String,並不會影響到另外一個String : 應該就是當你寫 : String a = "test"; : 記憶體配置一塊"test"的區域 然後把a 指向那塊區域 這與 immutable 無關, 如同你所說,這是新增一個 String,並且讓 a 指向它。 並不是修改 a (所指向物件) 的內容。 immutable 指的是 "你無法修改物件的內容"。 String 所提供的一些 method,像是 replace*(), 其實並不是修改原物件的內容,而是回傳新的物件。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.231

08/05 14:10, , 1F
不是就是因為immutable所以他必須新增一個String嘛??
08/05 14:10, 1F
你的原文寫: """因為 immutable 的關係,所以你改動其中一個String,並不會影響到另外一個String""" 我想這裡必須先把所謂的 "改動" 定義清楚是何者: 1. 修改 String 的內容。 2. 指向新的物件。 單就 "改動" 字面上來看,我認為是定義 (1), 不過從你的說法來看,應該是定義 (2), 然而若是定義 (2),即使物件不是 immutable,也不會影響到另一個物件。 當然你的推文所說也沒錯,只不過已經離原發問者的問題有點遠了。

08/05 14:20, , 2F
謝謝!
08/05 14:20, 2F
※ 編輯: tkcn 來自: 140.114.78.231 (08/05 14:46)
文章代碼(AID): #1EEtLYnj (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 8 篇):
11
12
2
2
2
4
文章代碼(AID): #1EEtLYnj (java)