問題引入:java
當咱們在存儲一個對象的是時候,不要把對象的裏面的每個屬性單獨存儲,也不要把全部的屬性都串成一個字符串,這樣在讀的時候會有很大的難度。因此,在存儲對象的時候就把對象當作是一個對象存儲就行了。數組
將程序[內存]中的對象以及對象的狀態信息存儲到文件中來;注意,此時存儲的是對象;網絡
應用場景:例如,咱們將一個對象從程序的一個部分傳遞到另一個部分,或者將一個對象從網絡的一個節點傳遞到另一個節點;閉包
下面是從JDK API 1.6.0中文版中截取的一些關於輸出流ObjectOutputStream(序列化)的一些小知識:
編碼
一.ObjectOutputStream 將 Java 對象的基本數據類型和圖形寫入 OutputStream。可使用 ObjectInputStream 讀取(重構)對象。經過在流中使用文件能夠實現對象的持久存儲。若是流是網絡套接字流,則能夠在另外一臺主機上或另外一個進程中重構對象。spa
二.只能將支持 java.io.Serializable 接口的對象寫入流中。每一個 serializable 對象的類都被編碼,編碼內容包括類名和類簽名、對象的字段值和數組值,以及從初始對象中引用的其餘全部對象的閉包。對象
三.writeObject 方法用於將對象寫入流中。全部對象(包括 String 和數組)均可以經過 writeObject 寫入。可將多個對象或基元寫入流中。必須使用與寫入對象時相同的類型和順序從相應 ObjectInputstream 中讀回對象。blog
四.還可使用 DataOutput 中的適當方法將基本數據類型寫入流中。還可使用 writeUTF 方法寫入字符串。接口
五.對象的默認序列化機制寫入的內容是:對象的類,類簽名,以及非瞬態和非靜態字段的值。其餘對象的引用(瞬態和靜態字段除外)也會致使寫入那些對象。可以使用引用共享機制對單個對象的多個引用進行編碼,這樣便可將對象的圖形恢復爲最初寫入它們時的形狀。進程
反序列化(ObjectInputStream):]