區(qū)別分析:
(推薦學(xué)習(xí):java入門程序)
淺復(fù)制
被復(fù)制對象的所有變量都含有與原來對象相同的值,而所有其他對象的引用仍然指向原來的對象。
換言之,淺復(fù)制僅僅復(fù)制所考慮的對象,而不復(fù)制它所引用的對象。
深復(fù)制
被復(fù)制對象的所有變量都含有與原來對象相同的值,除去那些引用其他對象的變量。那些引用其他對象的變量將指向被復(fù)制的新對象,而不再是原有的那些被引用的對象。
換言之,深復(fù)制把復(fù)制的對象所引用的對象都復(fù)制了一遍。
(視頻教程推薦:java視頻教程)
定義如下一個類:
class Test { public int i; public StringBuffer s; }
下圖展示了對這個類的對象進(jìn)行復(fù)制時,淺復(fù)制與深復(fù)制的區(qū)別: