首頁  >  文章  >  Java  >  java的序列化是什麼

java的序列化是什麼

(*-*)浩
(*-*)浩原創
2019-11-13 13:36:413304瀏覽

java的序列化是什麼

序列化:指堆記憶體中的java物件數據,透過某種方式把對儲存到磁碟檔案中,或是傳遞給其他網路節點(網路傳輸)。這個過程稱為序列化,通常是指將資料結構或物件轉換成二進位的過程。                 (建議學習:java課程

即將物件轉換為二元,用於保存,或網路傳輸。

序列化的作用

① 想把記憶體中的物件儲存到一個檔案或資料庫中時候;

② 想用套接字在網路上傳送物件的時候;

③ 想透過RMI傳輸物件的時候

一些應用程式場景,涉及到將物件轉化成二進位,序列化保證了能夠成功讀取到保存的對象。

java的序列化實作

要實現物件的序列化,最直接的操作就是實作Serializable介面

使用IO流中的對象流可以實現序列化操作,將物件儲存到文件,再讀取出來。

先建立一個對象,並實作Serializable介面:

import java.io.Serializable;

public class User implements Serializable{
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}

用物件流寫一個保存物件與讀取物件的工具類別:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtil {
    // 保存对象,序列化
    public static void saveObject(Object object) throws Exception {
        ObjectOutputStream out = null;
        FileOutputStream fout = null;
        try {
            fout = new FileOutputStream("D:/1.txt");
            out = new ObjectOutputStream(fout);
            out.writeObject(object);
        } finally {
            fout.close();
            out.close();
        }
    }
    // 读取对象,反序列化
    public static Object readObject() throws Exception {
        ObjectInputStream in = null;
        FileInputStream fin = null;
        try {
            fin = new FileInputStream("D:/1.txt");
            in = new ObjectInputStream(fin);
            Object object = in.readObject();
            return object;
        } finally {
            fin.close();
            in.close();
        }
    }
}

測試:

public class Main {
    public static void main(String[] args) {
        User user = new User();
        user.setName("旭旭宝宝");
        user.setAge(33);
        // 保存
        try {
            SerializeUtil.saveObject(user);
        } catch (Exception e) {
            System.out.println("保存时异常:" + e.getMessage());
        }
        // 读取
        User userObject;
        try {
            userObject = (User) SerializeUtil.readObject();
            System.out.println(userObject);
        } catch (Exception e) {
            System.out.println("读取时异常:" + e.getMessage());
        }
    }
}

測試結果:

java的序列化是什麼

#

以上是java的序列化是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn