溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java序列化是什么?你知道什么時候需要序列化嗎?

發(fā)布時間:2020-06-01 12:18:10 來源:網(wǎng)絡(luò) 閱讀:574 作者:java周某人 欄目:編程語言

Java序列化是什么?你知道什么時候需要序列化嗎?


Java序列化是什么?你知道什么時候需要序列化嗎?


什么是 java 序列化?什么情況下需要序列化?

序列化:將 Java 對象轉(zhuǎn)換成字節(jié)流的過程。

反序列化:將字節(jié)流轉(zhuǎn)換成 Java 對象的過程。

當(dāng) Java 對象需要在網(wǎng)絡(luò)上傳輸 或者 持久化存儲到文件中時,就需要對 Java 對象進(jìn)行序列化處理。

序列化的實(shí)現(xiàn):類實(shí)現(xiàn) Serializable 接口,這個接口沒有需要實(shí)現(xiàn)的方法。實(shí)現(xiàn) Serializable 接口是為了告訴 jvm 這個類的對象可以被序列化。

注意事項(xiàng):

  • 某個類可以被序列化,則其子類也可以被序列化

  • 聲明為 static 和 transient 的成員變量,不能被序列化。static 成員變量是描述類級別的屬性,transient 表示臨時數(shù)據(jù)

  • 反序列化讀取序列化對象的順序要保持一致

具體使用

package?constxiong.interview;?
import?java.io.FileInputStream;import?java.io.FileOutputStream;import?java.io.IOException;import?java.io.ObjectInputStream;import?java.io.ObjectOutputStream;import?java.io.Serializable;?
/**
?*?測試序列化,反序列化
?*?@author?ConstXiong
?*?@date?2019-06-17?09:31:22
?*/public?class?TestSerializable?implements?Serializable?{?
	private?static?final?long?serialVersionUID?=?5887391604554532906L;	
	private?int?id;	
	private?String?name;?
	public?TestSerializable(int?id,?String?name)?{		this.id?=?id;		this.name?=?name;
	}	
	@Override
	public?String?toString()?{		return?"TestSerializable?[id="?+?id?+?",?name="?+?name?+?"]";
	}?
	@SuppressWarnings("resource")	public?static?void?main(String[]?args)?throws?IOException,?ClassNotFoundException?{		//序列化
		ObjectOutputStream?oos?=?new?ObjectOutputStream(new?FileOutputStream("TestSerializable.obj"));
		oos.writeObject("測試序列化");
		oos.writeObject(618);
		TestSerializable?test?=?new?TestSerializable(1,?"ConstXiong");
		oos.writeObject(test);		
		//反序列化
		ObjectInputStream?ois?=?new?ObjectInputStream(new?FileInputStream("TestSerializable.obj"));
		System.out.println((String)ois.readObject());
		System.out.println((Integer)ois.readObject());
		System.out.println((TestSerializable)ois.readObject());
	}
?
}

打印結(jié)果:

測試序列化
618
TestSerializable?[id=1,?name=ConstXiong]

喜歡這篇文章的話,可以給作者點(diǎn)個喜歡,點(diǎn)下關(guān)注,每天都會分享Java相關(guān)文章!

記得一定要關(guān)注我哦,會不定時的福利贈送,包括整理的面試題,學(xué)習(xí)資料,源碼等~~


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI