一、序列化是幹什麼的?
內存中的各類對象的狀態(也就是實例變量,不是方法),而且能夠把保存的對象狀態再讀出來。html
二、什麼狀況下序列化
a、對象須要持久化 (硬盤or數據庫)
b、網絡傳輸 (套接字orRMI)
c、在進程間傳遞對象java
三、序列化ID的做用
java的序列化機制是經過在運行時判斷類的serialVersionUID來驗證版本一致性的。反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地實體類中的serialVersionUID進行比較,若是相同則認爲是一致的,即可以進行反序列化,不然就會報序列化版本不一致的異常。android
四、序列化機制
a、保存到磁盤的全部對象都得到一個序列號(1, 2, 3等等)
b、當要反序列化保存一個對象時,先檢查該對象是否被保存了。
c、若是之前保存過,只需寫入"與已經保存的類具備相同序列號的對象"的同樣的標記就可,不然,保存該對象。數據庫
五、序列化方式
a、Serializable
b、Externalizable (相似android Parcelable)網絡
五、其它
a、支持序列化和反序列化的基本類型有:String,Array,Enum和Serializable。類中的靜態變量不會序列化
b、transient來修飾不想要序列化的變量
c、 反序列化 ->ObjectOutPutStream(FileOutPutStream)ide
參照:https://blog.csdn.net/qq_16628781/article/details/70049623
https://www.cnblogs.com/csguo/p/7571741.html.net