java之對象的序列化和反序列化的區別


什么叫做對象的序列化?

第一種回答:序列化(ObjectInputStream)即將一個完整的對象拆成碎片按照序列,一個一個往文件里寫的過程就叫做序列化。

  反序列化(ObjectOutputStream)即將碎片一個一個組合成一個完整的對象。

----------------------

第二種回答:

序列化就是將對象(數據)轉為字節流存儲在硬盤中,實現持久化,(

對象序列化過程可以分為兩步:
第一: 將對象轉換為字節數組
第二: 將字節數組存儲到磁盤

)或者也可以通過網絡發送給任何其他程序(做到創建的字節流是與平台無關的,在一個平台上序列化的對象可以在不同的平台上反序列化。)

代碼實現:

 

反序列化就是將字節流轉為對象(創建對象)的過程也可以說字節序列轉換為內存中的對象

代碼實現:可以是文件中的,也可以是網絡傳輸過來的

 

序列化的作用:因為類的對象會隨着程序的終止而被垃圾收集器銷毀。想要要在不重新創建對象的情況下調用該類,則就需要序列化。

說完序列化作用,那么如何使Java類可序列化?

答:通過實現java.io.Serializable接口,可以在java類中啟用可序列化。它是一個標記接口,意味着它不包含任何方法或字段,僅用於標識可序列化的語義。

什么是serialVersionUID?

答:SerialVersionUID是一個標識符,當它通常使用對象的哈希碼序列化時會標記在對象上。我們可以通過Java中serialver工具找到該對象的serialVersionUID。

語法:serialver classname,SerialVersionUID用於對象的版本控制。當您添加或修改類中的任何字段時,已經序列化的類將無法恢復,因為serialVersionUID已為新類生成與舊的序列化對象將不同。Java序列化過程依賴於正確的serialVersionUID恢復序列化對象的狀態,並在serialVersionUID不匹配時拋出java.io.InvalidClassException 異常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM