[进阶]Java:对象序列化、反序列化

对象序列化:

  • 使用到的流是对象字节输出流:ObjectOutputStream
  • 作用:以内存为基础,把内存中的对象存储到磁盘文件中去。称为对象序列化。

[进阶]Java:对象序列化、反序列化_第1张图片

 [进阶]Java:对象序列化、反序列化_第2张图片

 代码演示如下:

学生类:

/**
   对象如果要序列化一定要实现Serializable接口
 */
public class Student implements Serializable {
    // 申明序列化的版本号码
    // 注意:序列化版本号与反序列化的版本号要一致才不会出错!
    private static final long seriaVersionUID = 1;
    private String name;
    private String loginName;
    //transient修饰的成员变量不参与序列化了 ---> 小知识
    private transient String password;
    private int age;

    public Student() {
    }

    public Student(String name, String loginName, String password, int age) {
        this.name = name;
        this.loginName = loginName;
        this.password = password;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", loginName='" + loginName + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                '}';
    }
}

序列化:

public class ObjectOutputStreamDemo01 {
    public static void main(String[] args) throws Exception{
        //1.创建学生对象
        Student s = new Student("陈磊","chenlei","666666",21);

        //2.对象序列化:使用对象字节输出流包装字节输出流管道
        ObjectOutputStream  oos = new ObjectOutputStream(new FileOutputStream("io-app2/src/obj.txt"));

        //3.直接调用序列化方法
        oos.writeObject(s);

        //4.释放资源
        oos.close();
        System.out.println("序列化完成了~~");
    }
}

1.对象序列化的含义是什么?

  • 把对象数据存入到文件中去

2.对象序列化用到了哪个流?

  • 对象字节输出流ObjectOutputStream
  • public void writeObject(Object obj)

3.序列化对象的要求是怎样的?

  • 对象必须实现序列化接口

对象反序列化:

  • 使用到的流是对象字节输入流:ObjectInputStream
  • 作用:以内存为基准、把存储到磁盘文件中的去的对象数据恢复成内存中的对象,称为对象反序列化。

[进阶]Java:对象序列化、反序列化_第3张图片

 代码演示如下:

public class ObjectInputStreamDemo02 {
    public static void main(String[] args) throws Exception{
        //1.创建对象字节输入流管道
        ObjectInputStream is = new ObjectInputStream(new FileInputStream("io-app2/src/obj.txt"));
        //2.调用对象字节输入流的反序列化方法
        Student s = (Student) is.readObject();
        System.out.println(s);
    }
}

1.对象反序列化的含义是什么?

  • 把磁盘中的对象数据恢复到内存中的Java对象中。

2.对象反序列化用到了哪个流?

  • 对象字节输入流ObjectInputStream
  • public Object readObject()

你可能感兴趣的:([进阶]Java:IO二,java,开发语言)