JAVA序列化與反序列化的意義

2021-09-02 05:30:14 字數 773 閱讀 7507

1、將物件或者異常等寫入檔案,通過檔案傳輸資訊。

2、將物件或者異常通過網路進行傳輸。

3、把記憶體中的物件狀態儲存到乙個檔案中或者資料庫中時。

序列化可以通過實現serializable 介面 或者 externalizable介面實現。

為什麼方法、類變數(即static關鍵字修飾的變數)不能被序列化?

原因: 首先我們考慮下,序列化的意義,即實現將物件或者異常通過網路的傳輸,當其反序列化時,仍能獲取原有物件的例項變數。而類變數和方法都存在於方法區,當你用於反序列化時,其類變數和方法時保持不變的,因此無需序列化。

例如:public class person implements serializable{

public string name;

public int age;  

public  person(string name, int age){

this.name = name;

this.age = age;

public static int location = "beijing";

................省略getter 和setter 方法

當你new乙個物件時 person p1 = new person("xiaowang",20); 序列化時,是想通過writeobject() 方法,將name = "xiaowang",age = 20 存入檔案。當你反序列化時,通過readobject()方法,仍能獲取到name,age的值。而類變數,方法是保持不變的,因此也無需序列化。

java序列化與反序列化

參考 總結 1 被transient 修飾的屬性,是不會被序列化的 2 靜態屬性不會被序列化 3 序列化與反序列化的serialversionuid要一致 4 objectoutputstream代表物件輸出流 它的writeobject object obj 方法可對引數指定的obj物件進行序列化...

Java序列化與反序列化

當需要把乙個物件儲存在檔案 資料庫中,或是將其在網路上傳播的時候,就需要對其進行序列化。序列化和反序列化就是分別把物件轉成位元組序列和把位元組序列恢復成物件的過程。實現serializable介面是應用序列化與反序列化的一種方式。這個介面沒有方法,這種叫標記介面,表示實現這個介面的類可以被序列化。若...

Java序列化與反序列化

private static final long serialversionuid 1l 序列化操作的時候系統會把當前類的serialversionuid寫入到序列化檔案中,當反序列化時系統會去檢測檔案中的serialversionuid,判斷它是否與當前類的serialversionuid一致,...