Java中什麼是序列化?
序列化,又稱為“串化”,可以形象的把它理解為把Java物件記憶體中的資料採編成一串二進位制的資料,然後把這些資料存放在可以可以持久化的資料裝置上,如磁碟。當需要還原這些資料的時候,在通過反序列化的過程,把物件又重新還原到記憶體中。
java.io.Serializable介面是可以進行序列化的類的標誌性介面,該介面本身沒有任何需要實現的抽象方法,它僅僅是用來告訴JVM該類的物件可以進行反序列化的,並且它的序列化ID由靜態的serialVersionlUID變數提供。
serialVersionlUID變數其實是一個靜態的long型的常量,它的作用在序列化和反序列化的過程中,起到了一個辨別類的作用。在反序列化的時候,如果倆個類的類名完全相同,就通過serialVersionlUID老判斷該類是否符合要求,如果不行,則丟擲異常。
java的I/O提供了一對類用做物件的序列化和反序列化,主要包括ObjectInputStream和ObjectOutputStream。它們的用法與位元組流相似,只不過此時處理的是物件,而不僅僅是位元組資料了。
總結:
序列化本質上就是把物件記憶體中的資料按照一定規則,變成一系列的位元組資料,然後在把這些位元組資料寫入到流中。而反序列化的過程相反,先讀取位元組資料,然後在重新組裝成Java物件。
所有需要進行序列化的類,都必須實現Serializable介面,必要時還需要提供靜態的常量serialVersionUID
相關文章
- Java序列化是什麼Java
- 什麼是Java Serializable(序列化)Java
- 什麼是java序列化?什麼情況下需要序列化?Java
- 什麼是Java序列化,如何實現java序列化Java
- 什麼是Java序列化?如何實現序列化?Java
- java 中/**是什麼Java
- java中RMI是什麼Java
- java中@Inherited是什麼?Java
- java中@Retention是什麼?Java
- java中lock介面是什麼Java
- java中死鎖是什麼Java
- Java是什麼_Java是做什麼的?Java
- Java中活鎖是什麼啊?Java
- Java中equals和==比的是什麼Java
- 為什麼Java需要物件的序列化Java物件
- 為什麼Java中繼承是有害的Java中繼繼承
- Java是什麼? Java適用於什麼工作?Java
- 什麼是java常量?Java
- 什麼是java常量Java
- 什麼是JAVA ? (轉)Java
- Java是什麼 (轉)Java
- 序列化和反序列化的底層實現原理是什麼?
- 什麼是序列化?物件和類的區別?物件
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- Java是什麼?主要是幹什麼的?Java
- Java swing是什麼?有什麼作用?Java
- Java 繼承是什麼?Java繼承
- Java專案是什麼?Java
- 深入探究Java中equals()和==的區別是什麼Java
- 在Java中建立物件的不同方法是什麼?Java物件
- Java 中經常被提到的 SPI 到底是什麼?Java
- Java中equals與==的本質區別是什麼?Java
- Java 中的 String 為什麼是不可變的?Java
- 為什麼Java中繼承多數是有害的Java中繼繼承
- Java三大框架是什麼,有什麼作用Java框架
- 什麼是java?為什麼大家都學習java技術?Java
- Java到底是什麼?學習java可以做什麼呢?Java
- mysql中是什麼意思?MySql