java實現深轉殖 deep clone

2021-05-08 20:52:38 字數 302 閱讀 8835

轉殖就是複製乙個物件的複本.但乙個物件中可能有基本資料型別,如:int,long,float    等,也同時含有非基本資料型別如(陣列,集合等)

被轉殖得到的物件基本型別的值修改了,原物件的值不會改變.這種適合shadow clone(淺轉殖).

但如果你要改變乙個非基本型別的值時,原物件的值卻改變了,.比如乙個陣列,記憶體中只copy他的位址,而這個位址指向的值並沒有copy,當clone時,兩個位址指向了乙個值,這樣一旦這個值改變了,原來的值當然也變了,因為他們共用乙個值.,這就必須得用深轉殖(deep clone).

下面是深轉殖方法:

Java基礎篇 深轉殖與淺轉殖

轉殖,顧名思義,即是產生乙個與原物件 完全 一樣的乙個新物件。這裡的一樣,或許是表面的一樣,或許是真的一樣。這就牽扯到兩個新定義 淺轉殖與深轉殖。淺轉殖 新物件的基礎型別的變數值與原物件相同,而特殊物件,即非八大基本型別的物件與原物件指向同一記憶體空間,不管新老物件誰對這段空間進行操作都會影響到另乙...

實現深轉殖工具類

public class cloneutils catch exception e return cloneobj 使用該工具類的物件必須要實現serializable介面,否則是沒有辦法實現轉殖的。public class person implements serializable public...

Java 轉殖,淺拷貝,深拷貝

當使用 賦值引用型別的時候,其實是直接賦值該物件的位址,本質還是乙個物件。而轉殖則是完全創造乙個新的物件出來,有自己的新位址,只是初始化的資料相同。轉殖屬於淺拷貝。person p1 newperson tom 11 person p2 p1 person p3 person p1.clone sy...