java之序列化Serializable

java之序列化Serializable

ID:42575730

大?。?9.20 KB

頁數(shù):13頁

時(shí)間:2019-09-18

java之序列化Serializable_第1頁
java之序列化Serializable_第2頁
java之序列化Serializable_第3頁
java之序列化Serializable_第4頁
java之序列化Serializable_第5頁
資源描述:

《java之序列化Serializable》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、1、序列化是干什么的?簡單說就是為了保存在內(nèi)存中的各種對象的狀態(tài)(也就是實(shí)例變量,不是方法),并且可以把保存的對象狀態(tài)再讀出來。雖然你可以用你自己的各種各樣的方法來保存objectstates,但是Java給你提供一種應(yīng)該比你自己好的保存對象狀態(tài)的機(jī)制,那就是序列化。2、什么情況下需要序列化a)當(dāng)你想把的內(nèi)存中的對象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫中時(shí)候;b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對象的時(shí)候;c)當(dāng)你想通過RMI傳輸對象的時(shí)候;3、當(dāng)對一個(gè)對象實(shí)現(xiàn)序列化時(shí),究竟發(fā)生了什么?在沒有序列化前,每個(gè)保存在堆(

2、Heap)中的對象都有相應(yīng)的狀態(tài)(state),即實(shí)例變量(instanceariable)比如:java代碼Foo?myFoo=newFoo();myFoo.setWidth(37);myFoo.setHeight(70);當(dāng)通過下面的代碼序列化之后,MyFoo對象中的width和Height實(shí)例變量的值(37,70)都被保存到foo.ser文件中,這樣以后又可以把它從文件中讀出來,重新在堆中創(chuàng)建原來的對象。當(dāng)然保存時(shí)候不僅僅是保存對象的實(shí)例變量的值,JVM還要保存一些小量信息,比如類的類型等以便恢復(fù)原

3、來的對象。java代碼FileOutputStreamfs=newFileOutputStream("foo.ser");ObjectOutputStreamos=newObjectOutputStream(fs);os.writeObject(myFoo);4、實(shí)現(xiàn)序列化(保存到一個(gè)文件)的步驟a、MakeaFileOutputStreamjava代碼FileOutputStreamfs=newFileOutputStream(“foo.ser”);b、MakeaObjectOutputStreamja

4、va代碼ObjectOutputStreamos=?newObjectOutputStream(fs);c、writetheobjectjava代碼os.writeObject(myObject1);os.writeObject(myObject2);os.writeObject(myObject3);d、closetheObjectOutputStreamjava代碼os.close();5、舉例說明Java代碼packagecom.hotye.dchaoxiong.serializabletest;i

5、mport?java.io.FileInputStream;import?java.io.FileOutputStream;import?java.io.ObjectInputStream;import?java.io.ObjectOutputStream;import?java.io.Serializable;public?classBox?implementsSerializable?{·private?staticfinal?longserialVersionUID?=?1L;·private?in

6、t?width;·private?int?height;·private?String?name;·public?staticvoidmain(String[]?args)?{·try?{·Box?myBox?=?newBox();·myBox.setWidth(50);·myBox.setHeight(30);·myBox.setName(“雕戈”);·FileOutputStream?fs?=?newFileOutputStream(“serializableObject.txt”);·ObjectO

7、utputStream?os?=?newObjectOutputStream(fs);·os.writeObject(myBox);·os.close();·fs.close();·}?catch(Exception?ex)?{·ex.printStackTrace();·}·try?{·FileInputStream?fis?=?newFileInputStream(“serializableObject.txt”);·ObjectInputStream?ois?=?newObjectInputStre

8、am(fis);·Box?box?=?(Box)?ois.readObject();·System.out.println(box.getWidth());·System.out.println(box.getHeight());·System.out.println(box.getName());·ois.close();·fis.close();·}?catch(Exception?e)?{·e.printStackTra

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。