java~序列化ObjectOutputStream 和 反序列化流ObjectInputStream

1)Person p = new Person("小美女", 18);
  
  目標: 保存到硬盤的person.txt文件中

2)序列化 ObjectOutputStream: 
  	把對象以流的方式,寫入到文件中保存,即寫對象,也叫對象的序列化;
  	對象中包含的不僅僅是字符,還有字節,因此要使用`字節流`;

  	ObjectOutputStream: 對象的序列化流:	
  		writeObject(p): 寫對象就可以寫進來, 實際上 我們看不懂在硬盤上保存的是什麼;



2)反序列化 ObjectInputStream:
	把文件中保存的對象,以流的方式讀取出來,叫做讀對象,也叫作反序列化;
	讀取的文件保存的都是字節,使用字節流;
	ObjectInputStream:
		readObject: 
			注意:我寫的時候可以寫任意的對象,讀的時候,既可以讀Person也可以讀Student,
			      因此讀出來的返回值是Object;

3)異常: 
	必須實現Serializable序列化接口纔可以被序列和反序列化;
    是標記性接口;

4)瞬態關鍵字: transient
	和靜態的功能差不多,但是沒有靜態的含義;
  
  static關鍵字: 靜態關鍵字
  	靜態優先非靜態加載到內存中;
  	被序列化的都是對象,靜態的成員無法序列化;

5)序列號衝突
	class文件會自動添加序列號;
	我們可以自動添加一個序列化號 
		static final long serialVersionUID = 42; 即可,避免InvalidClassException;
		不管類是否修改,序列號不變;

6)可以序列化和反序列化集合
	我們想在文件中保存多個對象的時候,
	可以將多個對象存儲到一個集合中,
	對集合進行序列化和反序列化;

 

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