我剛剛在Java中學習了克隆。有很深的克隆和淺層克隆。我在漫遊ArrayList在對象添加到它時做了什麼。它是否克隆?是否將對象添加到ArrayList克隆?
我用String對象做了一些測試。
String s = new String("hello");
ArrayList<String> list = new ArrayList<String>();
list.add(s);
s = s.replace('h','y');
System.out.prinln(list.get(0));
它打印出「你好」。所以它確實克隆。然後我從個人經歷中記起,當我添加寫入數組的對象時,它不會克隆。當我改變陣列中的一個時,原來的改變也是如此。
我搜索谷歌,不知道,因爲我缺乏搜索技巧,我沒有找到我正在尋找的答案。然後我搜索了StackOverFlow,我再也沒有找到。
那麼ArrayList的處理是什麼?如果這個問題重複,我真的很抱歉,我真的搜查。
有人不明白這個問題: ArrayList clon? (這是我正在尋找答案的主要問題)如果不是這樣,爲什麼String得到克隆?
它doesn't克隆。在這種情況下,你只是注意到'String'是不可變的。 – SomeJavaGuy
因爲字符串是不可變的! – Shriram
字符串不變性。以下是關於這個主題的很好的閱讀:http://stackoverflow.com/questions/1552301/immutability-of-strings-in-java –