面試題總結——對象序列化與反序列化

面試題總結——對象序列化與反序列化

  對象序列化:將內存中保存的對象變爲二進制數據流的形式進行傳輸,或者是將其保存在文本中。

  簡單來說:
   序列化:把對象轉換爲字節序列的過程
   反序列化:把字節序列恢復爲對象的過程

  序列化的用途
   1、把對象的字節序列永久的保存在硬盤上(放在一個文件中),要取出的時候再反序列化爲對象即可。
   2、網絡上傳輸對象對象->字節序列->網絡傳輸(字節)->字節序列->對象
  序列化與反序列化的前提
   需要被序列化的類必須實現java.io.Serializable接口


  對象輸出流:ObjectOutputStream,使用writeObject(Object obj)方法可對obj對象進行序列化,將得到的字節序列寫入一個當前程序的輸出流中。對象輸出流需要和其他輸出流(內存流/文件流…)配合使用
  對象輸入流:ObjectInputStream,使用readObject()方法從一個源輸入流中讀取字節序列,再將該字節序列反序列化爲一個對象,並將該對象返回。對象輸入流也需要和其他輸入流(內存流/文件流…)搭配使用
  對象序列化的過程:
   1、創建一個對象輸出流,它可以包裝一個其他類型的輸出流(eg:文件輸出流)
   2、通過對象輸出流的writeObject()將對象->字節序列。
  對象反序列化的過程:
   1、 創建一個對象輸入流,它可以包裝一個其他類型的源輸入流(eg:文件輸入流)
   2、通過對象輸入流的readObject()將字節序列->對象。


實例參考:Java 對象序列化和反序列化 (實現 Serializable 接口)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章