七叶笔记 » java编程 » java的序列化是什么

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-40.png

相关文章