Java的淺拷貝和深拷貝(1)

 Java的拷貝分爲深拷貝和淺拷貝

 

淺拷貝:把一個對象中所有的非static成員變量(包括對其它對象的引用,java中的引用相當於C/C++中的指針變量)都拷貝一遍,而不拷貝引用所指向的對象

深拷貝:把一個對象中所有的非static成員變量(包括對其它對象的引用)都拷貝一遍,引用所指向的對象也拷貝一份

 

這篇文章先講述淺拷貝,深拷貝下篇文章講述

 

一個類的對象如果想要具有拷貝的功能,比如符號如下條件:

   1.必須實現Cloneable接口(這個接口中沒有定義方法,叫做標記接口)

   2.重寫Object類的clone()方法,該方法實現的是淺拷貝

   3.在該類的clone()方法中的第一句,比如調用super.clone()來調用Object的clone()方法來實現拷貝

 

以下是一個淺拷貝的例子:

 

 

 

 

從運行結果可以看出,通過學生s2將其引用school所指向的對象的name和bornYear屬性改變,相應的s1的也被改變,這說明學生s1和學生s2裏面的school引用指向的始終是同一個School對象。這就是淺拷貝的含義。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章