1 listlist=arrays.aslist(2new student("fndroid", 22, student.sax.male, 180),
3new student("jack", 20, student.sax.male, 170),
4new student("liliy", 18, student.sax.female, 160)5);
6 listlist2= new arraylist<>();
7list2.addall(list);
8 list.get(0).setage(15);
910 system.out.println(list2.get(0).getage());
上面一段** 你會發現 list2裡的第乙個元素也是15,也就是說你雖然拷貝了乙個list,但是還是指向原來的物件,你改變原來的物件的屬性值,拷貝的list裡的物件屬性也會變,
淺拷貝:被複製物件的任何變數都含有和原來的物件相同的值,而任何的對其他物件的引用仍然指向原來的物件。對拷貝後的引用的修改,還能影響原來的物件。
深拷貝:把要複製的物件所引用的物件都複製了一遍,對現在物件的修改不會影響原有的物件。
深度拷貝和淺度拷貝
文字說明 比如乙個陣列 array 淺度拷貝是當陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a也隨著改變,深度拷貝是噹噹陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a裡面的陣列陣列不隨著改變,那麼為什麼淺度拷貝會改變a的陣列值而深度拷貝則不會呢?因為淺度拷貝指向的是同乙個記憶體,...
深度複製和淺度複製
深度複製和淺度複製的區別在於有沒有為拷貝出的新物件重新分配一塊記憶體區域。淺度拷貝即直接賦值,拷貝的只是原始物件的引用,在堆中仍然公用一塊記憶體,而深度拷貝為新物件在堆中重新分配一塊記憶體,所以對新物件的操作不會影響原始物件 public class person implements clonea...
Java的淺度轉殖和深度轉殖
前言 protected native object clone throws clonenotsupportedexception 方法由protected修飾,只能由子類重寫和呼叫,而且為本地方法。object提供clone方法,生成物件的乙個副本,來實現物件的一次淺度轉殖。但是物件的引用型別不...