(JAVA)序列化

对象序列化与反序列化
对象中的数据有:new Object() 自己的成员变量
如果对象的基本数据不变,反复使用
什么是序列化
将对象中的数据以二进制方式存入硬盘,永久保存
二进制文件可以在网络上传输
反序列化
将存在硬盘中的二进制文件,读取出来还原对象中的数据

写对象的流,实现对象的序列化,Java.io.ObjectOutputStream
读对象的流,实现对象的序列化,java.io.ObjectInputStream

对象类,需要实现Serializable开启序列化功能
静态,成员变量,属于自己的类,不属于对象,不能序列化
transient 修饰成员变量,组织对象序列化
Serializable接口,
里面没有抽象方法,实现后,不用写任何方法,

修改源代码后,class文件不会重新计算序列号
给类,自己定义一个序列号


Exception in thread "main" java.io.InvalidClassException:
Person; local class incompatible: stream classdesc serialVersionUID = 5106964254523124602,
 local class serialVersionUID = -3636218586871335542
import java.io.*;

/**
 * @author Alina
 * @date 2021年12月11日 4:28 下午
 * 对象序列化
 */
public class ObjectStreamDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
       // writeObiect();
        readObject();

    }
    public static void writeObiect() throws IOException {
        ObjectOutputStream oop = new ObjectOutputStream
                (new FileOutputStream("/Users/yuzhang/Desktop/IOPrctice/test2.txt"));
        Person p = new Person();
        oop.writeObject(p);
        oop.flush();
        oop.close();
    }
    public static void readObject() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream
                (new FileInputStream("/Users/yuzhang/Desktop/IOPrctice/test2.txt"));
        Object obj = ois.readObject();
        System.out.println(obj);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值