两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

我們已經(jīng)知道,一個類的兩個對象如果具有相同的引用,那么它們就具有相同的實體和功能,比如:

A one = new A();
A two = one;


假設(shè)A類有名字為x的int型成員變量,那么,如果進行如下操作:

two.x = 100;

那么one.x的值也會是100。


再比如,某個方法的參數(shù)是People類型:

public void f(People p) {
    p.x = 200;
}

如果調(diào)用該方法時,將People的某個對象的引用,比如zhang,傳遞給參數(shù)P,那么該方法執(zhí)行后,zhang.x的值也將是200。


有時想得到對象的一個“復(fù)制品”,復(fù)制品實體的變化不會引起原對象實體發(fā)生變化,反之亦然。這樣的復(fù)制品稱為原對象的一個克隆對象或簡稱克隆。


使用對象流很容易獲取一個序列化對象的克隆,只需將該對象寫入對象輸出流指向的目的地,然后將該目的地作為一個對象輸入流的源,那么該對象輸入流從源中讀回的對象一定是原對象的一個克隆,即對象輸入流通過對象的序列化信息來得到當(dāng)前對象的一個克隆。例如,上節(jié)例子中的對象xinfei就是對象changhong的一個克隆。


當(dāng)程序想以較快的速度得到一個對象的克隆時,可以用對象流將對象的序列化信息寫入內(nèi)存,而不是寫入到磁盤的文件中。對象流將數(shù)組流作為底層流就可以將對象的序列化信息寫入內(nèi)存。例如,我們可以將上節(jié)例子中的

FileOutputStream fileOut = new FileOutputStream(file);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);

FileInputStream fileIn = new FileInputStream(file);
ObjectInputStream objectIn = new ObjectInputStream(fileIn);

分別更改為:

ByteArrayOutputStream outByte = new ByteArrayOutputStream();
ObjectOutputStream objectOut = new ObjectOutputStream(outByte);

ByteArrayInputStream inByte = new ByteArrayInputStream(outByte.toByteArray());
ObjectInputStream objectIn = new ObjectInputStream(inByte);


java.awt包中的Component類是實現(xiàn)Serializable接口的類,組件是序列化對象,因此,程序可以把組件寫入輸出流,然后再用輸入流讀入該組件的克隆。


點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)