Re: [問題] 新手問題
※ 引述《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
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)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章