Java核心编程day7(序列化)

  1. 序列化流

(1)序列化:将对象转换成字节存储到文件中

(2)反序列化:将文件中存储字节转化为对象

  1. 序列化流和反序列化流

(1)序列化流:ObjectOutputStream,构造函数:public ObjectOutputStream(OutputStream out)

 //创建序列化流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test2/test3.txt"));
        //调用writeObject方法将对象写到文件中
        oos.writeObject(new Car("小蜜蜂",99999,"red"));
        oos.close();
    }

(2)反序列化流:ObjectInputStream,构造函数:public ObjectInputStream(InputStream in)

 public static void test02() throws IOException, ClassNotFoundException {
        //创建反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test2/test3.txt"));
        //调用readObject方法读取文件中的对象
        Car c=(Car)ois.readObject();
        System.out.println(c);
        ois.close();
    }
  1. 注意事项:

(1)如果要将一个类的对象进行序列化操作,该类要实现serializable接口,否则会报NotSerializable。

(2)当一个对象序列化后会系带一个serialVersionUID,如果再去改变,此时类会重新编译,serializable接口会重新提供一个serialVersionUID,此时对对象进行反序列化操作时,会因serialVersionUID不同而导致失败。

(3)使用transient和static修饰的变量无法被序列化

(4)解决serialVersionUID的方法:手动声明一个serialVersionUID让其值无论如何都保持不变。

例如:static final long serialVersionUID=1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值