一,棧
二,堆
先看看什麼是棧,什麼是堆,至於為什麼要這裡開頭就講棧和堆的解釋,原因後在後面有解釋,請往下看,直接上例項:淺拷貝例項:
//淺拷貝**
public
class
weekreport
implements
cloneable
,serializable
public
void
setemp
(string emp)
public string getsummary()
public
void
setsummary
(string summary)
public string getplain()
public
void
setplain
(string plain)
public string getsuggestion()
public
void
setsuggestion
(string suggestion)
public sysacsserver getsysacsserver()
public
void
setsysacsserver
(sysacsserver sysacsserver)
@override
public string tostring()
';}@override
protected object clone()
throws clonenotsupportedexception
}class
weektest}/*
這裡是native 關鍵字告訴編譯器(其實是jvm)呼叫的是該方法在外部定義,這裡指的是c。
呼叫本地方法且clone方法是直接複製記憶體中的二進位制。效率是非常高的。
clone方法,是不會引起構造器的呼叫的。
*/protected
native object clone()
throws clonenotsupportedexception;
輸出結果:false
weekreport
weekreport
輸出結果為false說明兩個類的記憶體位址是不相同的,等於說在copy的時候進行新開闢了乙個記憶體空間.這裡我們講講理論方面的東西,先看看,後面會**細講:二、淺拷貝與深拷貝深拷貝和淺拷貝的示意圖大致如下:但是我們可以看到這裡有問題,引用的實體類在我copy以後wr2進行賦值123456789後,wr的引用實體類也一模一樣的變化了.
我們需要實現的是進行copy以後自己操作賦值,不要影響其他的宣告物件.
這裡就是淺拷貝的問題.為什麼會產生這樣的問題我們進行深入的討論.請看一下內容:
三、賦值和淺拷貝的區別
通過深拷貝的方式例項:
//通過實現cloneable和序列化進行操作
public
class
weekreport
implements
cloneable
,serializable
public
void
setemp
(string emp)
public string getsummary()
public
void
setsummary
(string summary)
public string getplain()
public
void
setplain
(string plain)
public string getsuggestion()
public
void
setsuggestion
(string suggestion)
public sysacsserver getsysacsserver()
public
void
setsysacsserver
(sysacsserver sysacsserver)
@override
public string tostring()
';}@override
protected object clone()
throws clonenotsupportedexception
catch
(exception e)}}
class
weektest
輸出結果:
C 原型模式(深拷貝 淺拷貝)
建立原型 public abstract class base public int age public base public base string name,int age 深拷貝 public abstract base clone 淺拷貝 public abstract base mcl...
設計模式 拷貝和原型模式
我對於設計模式還是一知半解的,最近看了幾個設計模式,單例模式和工廠模式是比較基礎和簡單的,這裡我就不贅述了,但是他們是最為普遍的設計模式,不了解的小夥伴們還是去看看為好。關於拷貝,這篇文章寫得特別好,深入淺出。總結起來就是 類初始化的過程比作列印,拷貝的過程比作影印。類載入的過程很複雜,如果我們迴圈...
設計模式 原型模式介紹 原型模式的深拷貝問題
轉殖羊問題 有乙個羊,是乙個類,有對應的屬性,要求建立完全一樣的10隻羊出來。那麼實現起來很簡單,我們先寫出羊的類 public class sheep然後,建立10只一樣的羊,就在客戶端寫乙個 建立 原始羊 sheep sheep new sheep tom 1,白色 轉殖羊 sheep shee...