java序列化(serializable)的作用和反序列化

java序列化(serializable)的作用和反序列化

ID:6164601

大小:49.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-01-05

java序列化(serializable)的作用和反序列化_第1頁(yè)
java序列化(serializable)的作用和反序列化_第2頁(yè)
java序列化(serializable)的作用和反序列化_第3頁(yè)
java序列化(serializable)的作用和反序列化_第4頁(yè)
java序列化(serializable)的作用和反序列化_第5頁(yè)
資源描述:

《java序列化(serializable)的作用和反序列化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

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

2、竟發(fā)生了什么?在沒(méi)有序列化前,每個(gè)保存在堆(Heap)中的對(duì)象都有相應(yīng)的狀態(tài)(state),即實(shí)例變量(instanceariable)比如:java代碼Foo?myFoo=newFoo();myFoo.setWidth(37);myFoo.setHeight(70);當(dāng)通過(guò)下面的代碼序列化之后,MyFoo對(duì)象中的width和Height實(shí)例變量的值(37,70)都被保存到foo.ser文件中,這樣以后又可以把它從文件中讀出來(lái),重新在堆中創(chuàng)建原來(lái)的對(duì)象。當(dāng)然保存時(shí)候不僅僅是保存對(duì)象的實(shí)例變量的值,JVM還要保存一些小量信

3、息,比如類的類型等以便恢復(fù)原來(lái)的對(duì)象。java代碼FileOutputStreamfs=newFileOutputStream("foo.ser");ObjectOutputStreamos=newObjectOutputStream(fs);os.writeObject(myFoo);4、實(shí)現(xiàn)序列化(保存到一個(gè)文件)的步驟?a、MakeaFileOutputStreamjava代碼FileOutputStreamfs=newFileOutputStream(“foo.ser”);b、MakeaObjectOutputS

4、treamjava代碼ObjectOutputStreamos=?newObjectOutputStream(fs);c、writetheobjectjava代碼os.writeObject(myObject1);os.writeObject(myObject2);os.writeObject(myObject3);d、closetheObjectOutputStreamjava代碼os.close();5、舉例說(shuō)明Java代碼package?com.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?class?Box?implements?Serializable?{1.private?static?final?long?serialVersionUID?=?1L;2.private?int?

6、width;3.private?int?height;4.private?String?name;5.public?static?void?main(String[]?args)?{6.try?{7.Box?myBox?=?new?Box();8.myBox.setWidth(50);9.myBox.setHeight(30);10.myBox.setName(“雕戈”);11.FileOutputStream?fs?=?new?FileOutputStream(“serializableObject.txt”);12.

7、ObjectOutputStream?os?=?new?ObjectOutputStream(fs);13.os.writeObject(myBox);14.os.close();15.fs.close();16.}?catch?(Exception?ex)?{17.ex.printStackTrace();18.}19.try?{20.FileInputStream?fis?=?new?FileInputStream(“serializableObject.txt”);21.ObjectInputStream?ois?

8、=?new?ObjectInputStream(fis);22.Box?box?=?(Box)?ois.readObject();23.System.out.println(box.getWidth());24.System.out.println(box.getHeight());25.System.out.pri

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

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

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