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