日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java为什么要序列化

發(fā)布時(shí)間:2023/12/16 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java为什么要序列化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

?

一、什么是序列化和反序列化

二、為什么要序列化

三、序列化和反序列化操作

序列化操作

反序列化操作

四、注意


一、什么是序列化和反序列化

序列化就是把對象變成二進(jìn)制格式的過程。

反序列化就是把二進(jìn)制格式的對象還原成正常對象的過程。

?

二、為什么要序列化

對象序列化無非兩個(gè)原因:

1.用于網(wǎng)絡(luò)傳輸對象

在一臺機(jī)子上,有一個(gè)JVM,那么在同一個(gè)JVM中的不同對象,當(dāng)然可以隨便調(diào)用各自的方法。但假設(shè),從分布式而言,北京的一臺服務(wù)器需要調(diào)用廣州服務(wù)器的一個(gè)對象,怎么辦,兩個(gè)服務(wù)器有不同的JVM,那這時(shí)候只能從廣州服務(wù)器上把該對象進(jìn)行序列化,然后通過網(wǎng)絡(luò)發(fā)送到北京服務(wù)器,然后再反序列化。

2. 用于把對象保存在硬盤中

對象存在于內(nèi)存中,內(nèi)存是關(guān)機(jī)就掉數(shù)據(jù)的設(shè)備。例如玩游戲,要存檔,就可以簡單理解為將當(dāng)前游戲運(yùn)行的所有對象序列化保存到硬盤上,然后你再次玩的時(shí)候,你讀取存檔,就是反序列化,“再弄出這些對象出來”,繼續(xù)運(yùn)行。

?

三、序列化和反序列化操作

1.一個(gè)類想要能被序列化,必須實(shí)現(xiàn)? ?java.io.Serializable? 這個(gè)接口

2.該類的所有屬性必須是可序列化的,如果有一個(gè)屬性不是可序列化的,或者說不想它被序列化,那么可以給這個(gè)屬性用transient修飾。

一個(gè)可被序列化的類如下:

序列化操作

ObjectOutputStream 類用來序列化一個(gè)對象,如下的 SerializeDemo 例子實(shí)例化了一個(gè) Employee 對象,并將該對象序列化到一個(gè)文件中。

該程序執(zhí)行后,就創(chuàng)建了一個(gè)名為 employee.ser 文件。

注意:?當(dāng)序列化一個(gè)對象到文件時(shí), 按照 Java 的標(biāo)準(zhǔn)約定是給文件一個(gè) .ser 擴(kuò)展名。

反序列化操作

利用ObjectInputStream類進(jìn)行反序列化。

四、注意

1.static的變量不能被序列化,因?yàn)閟tatic的變量是屬于類的
2.Transient關(guān)鍵字,主要是控制變量是否能夠被序列化。Transient表示臨時(shí)的意思。

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Java为什么要序列化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。