Java为什么要序列化
目錄
?
一、什么是序列化和反序列化
二、為什么要序列化
三、序列化和反序列化操作
序列化操作
反序列化操作
四、注意
一、什么是序列化和反序列化
序列化就是把對象變成二進制格式的過程。
反序列化就是把二進制格式的對象還原成正常對象的過程。
?
二、為什么要序列化
對象序列化無非兩個原因:
1.用于網絡傳輸對象
在一臺機子上,有一個JVM,那么在同一個JVM中的不同對象,當然可以隨便調用各自的方法。但假設,從分布式而言,北京的一臺服務器需要調用廣州服務器的一個對象,怎么辦,兩個服務器有不同的JVM,那這時候只能從廣州服務器上把該對象進行序列化,然后通過網絡發送到北京服務器,然后再反序列化。
2. 用于把對象保存在硬盤中
對象存在于內存中,內存是關機就掉數據的設備。例如玩游戲,要存檔,就可以簡單理解為將當前游戲運行的所有對象序列化保存到硬盤上,然后你再次玩的時候,你讀取存檔,就是反序列化,“再弄出這些對象出來”,繼續運行。
?
三、序列化和反序列化操作
1.一個類想要能被序列化,必須實現? ?java.io.Serializable? 這個接口
2.該類的所有屬性必須是可序列化的,如果有一個屬性不是可序列化的,或者說不想它被序列化,那么可以給這個屬性用transient修飾。
一個可被序列化的類如下:
序列化操作
ObjectOutputStream 類用來序列化一個對象,如下的 SerializeDemo 例子實例化了一個 Employee 對象,并將該對象序列化到一個文件中。
該程序執行后,就創建了一個名為 employee.ser 文件。
注意:?當序列化一個對象到文件時, 按照 Java 的標準約定是給文件一個 .ser 擴展名。
反序列化操作
利用ObjectInputStream類進行反序列化。
四、注意
1.static的變量不能被序列化,因為static的變量是屬于類的
2.Transient關鍵字,主要是控制變量是否能夠被序列化。Transient表示臨時的意思。
?
?
?
?
總結
以上是生活随笔為你收集整理的Java为什么要序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 病毒的种类和特征
- 下一篇: L2十档行情API接口(十档委托、买卖队