Re: [問題] 新手問題

看板java作者 (林帛亨加油!!!)時間14年前 (2011/08/05 12:27), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/8 (看更多)
※ 引述《singlovesong (~"~)》之銘言: : String a = new String("Test String!"); : String b = a; : 想請問 : 這樣子的意思是什麼意思呢? : 是把a 的reference 複製給b : 還是把a的內容複製給b : 如果是前者的話 那麼從a改內容 是不是b"指"到的這個String 也會更著改 : 如果是後者 那麼為什麼不用寫成 : String b = new String(a); : 是compiler 幫忙做掉的嗎? : 謝謝! 你可以用 == 來測試一下之間的不同 String 用 == 是測試是否為相同的物件 而不是字串內容是否相同 另外String 是 immutable的 當 String a = new String("Test String!"); String b = a; a == b 會是 true 而 String a = new String("Test String!"); String b = new String(a); a == b 會是 false 其實當 String a = "test"; String b = "test"; a == b 也會是 true; 然後因為 immutable 的關係,所以你改動其中一個String,並不會影響到另外一個String 應該就是當你寫 String a = "test"; 記憶體配置一塊"test"的區域 然後把a 指向那塊區域 然後你再寫 a = "bbb" 的時候 因為String被配置後就 immutable的關係 他要在重新配置一塊新的"bbb"的區域,再把a指向新的區域 當原本的"test"區域沒有任何物件指向他的時候,就會被垃圾回收回收掉 所以改變指向相同東西的String之一 並不會影響到其他的String Java新手 有錯請指正 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.51.171 ※ 編輯: peacedove 來自: 220.135.51.171 (08/05 12:28)

08/08 15:25, , 1F
是String Pool嗎?
08/08 15:25, 1F
文章代碼(AID): #1EEt59oJ (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
2
2
完整討論串 (本文為第 5 之 8 篇):
11
12
2
2
2
4
文章代碼(AID): #1EEt59oJ (java)