1. 程式人生 > >Java物件序列化

Java物件序列化

什麼是物件序列化?

物件序列化是指將物件轉換為二進位制資料流的操作,從而使物件的狀態資訊轉換為可以儲存或傳輸的形式。通俗點,我覺得就是把物件的狀態轉換為一個字串(這個字串是亂碼的,誰也看不懂)。

為什麼要有物件序列化?

比如有一個建立一個物件:

Book book=new Book("你好 舊時光");

當這句程式碼執行的時候,我們的程式會在記憶體開闢一個堆記憶體儲存new出來的這個book實體物件的內容,開闢一個棧記憶體儲存一個變數book,內容為堆記憶體中book物件的地址。簡單的說,物件book是我們的程式執行時並且在電腦通電的情況下在記憶體中維護的一種東西,如果我們的程式停止運行了或者電腦斷電了,物件book將不復存在。那麼如何把物件book的內容儲存在磁碟上呢(也就是說在沒電時繼續保留著)?這時就需要把物件book序列化,也就是說把book物件的內容轉換成一個字串的形式,然後再儲存在磁碟上。除此之外,我們通過http協議把物件傳送到客戶端也是通過序列化完成的。

什麼是反序列化?

反序列化就是解析物件序列化後得到的字串還原為物件。

實現序列化與反序列化

java提供有兩個類分別進行序列化和反序列化操作。

序列化類:java.io.ObjectOutputStream

構造方法(其中一個):

public ObjectOutputStream(OutputStream out) throws IOException

ObjectOutputStream是OutputStream的子類,在構造方法中又接收OutputStream