Java输入输出:解释一下序列化和反序列化。

简介: Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。

序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,我们可以使用java.io包中的ObjectOutputStream类将对象序列化为字节流,然后通过ObjectInputStream类将字节流反序列化为对象。

反序列化是将字节流转换回对象的过程。在Java中,我们可以使用java.io包中的ObjectInputStream类将字节流反序列化为对象。

以下是一个简单的示例:

import java.io.*;

class Person implements Serializable {
   
    private String name;
    private int age;

    public Person(String name, int age) {
   
        this.name = name;
        this.age = age;
    }

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

public class SerializeDemo {
   
    public static void main(String[] args) {
   
        Person person = new Person("张三", 30);

        // 序列化
        try (FileOutputStream fos = new FileOutputStream("person.ser");
             ObjectOutputStream oos = new ObjectOutputStream(fos)) {
   
            oos.writeObject(person);
            System.out.println("序列化成功");
        } catch (IOException e) {
   
            e.printStackTrace();
        }

        // 反序列化
        try (FileInputStream fis = new FileInputStream("person.ser");
             ObjectInputStream ois = new ObjectInputStream(fis)) {
   
            Person deserializedPerson = (Person) ois.readObject();
            System.out.println("反序列化成功");
            System.out.println(deserializedPerson);
        } catch (IOException | ClassNotFoundException e) {
   
            e.printStackTrace();
        }
    }
}

在这个示例中,我们创建了一个实现Serializable接口的Person类。然后,我们使用ObjectOutputStream将Person对象序列化到文件"person.ser"中,接着使用ObjectInputStream从文件中反序列化Person对象。

相关文章
|
14天前
|
存储 Java
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
|
18天前
|
JSON Java API
jackson序列化和反序列化中的注解和扩展点大全【收藏】
jackson序列化和反序列化中的注解和扩展点大全【收藏】
|
19天前
|
存储 JSON 数据库
Django REST framework关联序列化器详解:掌握复杂关系的序列化与反序列化艺术
Django REST framework关联序列化器详解:掌握复杂关系的序列化与反序列化艺术
|
20天前
|
Java
JAVA单例模式-双重检验锁(防止反射、序列化多个)
JAVA单例模式-双重检验锁(防止反射、序列化多个)
22 1
|
10天前
|
JSON NoSQL Java
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
|
14天前
|
XML JSON 缓存
优化Java中XML和JSON序列化
优化Java中XML和JSON序列化
|
17天前
|
存储 Java 数据库
Java中序列化与反序列化详解
Java中序列化与反序列化详解
13 0
|
18天前
|
JSON Java 数据格式
实现自定义序列化和反序列化控制的5种方式
实现自定义序列化和反序列化控制的5种方式
|
18天前
|
存储 缓存 Java
杭州 序列化与反序列化 (借鉴-侵-删)(序列化ID问题)
杭州 序列化与反序列化 (借鉴-侵-删)(序列化ID问题)
9 0
|
19天前
|
XML 机器学习/深度学习 存储
技术心得:对象的序列化存入数据库,与反序列化
技术心得:对象的序列化存入数据库,与反序列化
14 0