Java中的序列化与反序列化

1.java中的序列化

Serialization(序列化):为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来(即将对象以一连串的字节描述)

1.1序列化的方法

1.首先要让类实现Serializable序列化接口

public class Student implements Serializable{

    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

2.然后使用ObjectOutputStream 写入要序列化的对象

Student student = new Student();
student.setId(1);
student.setName("张三");

// 序列化就是将对象变为输出字节流
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("d:\\student.obj"));
os.writeObject(student);
os.close();

注意:

  1. 要求对象中的所有属性都是可以序列化的
  2. 如果某个属性不想序列化,可以在属性上加transient关键字
  3. 如果没有实现Serializable接口,会出现NotSerializableException异常

#2.反序列化

deserialization(反序列化):把字节序列重建成一个对象的过程。

2.1反序列化的方法

ObjectInputStream用来读取字节内容,反序列化为java对象

ObjectInputStream is = new ObjectInputStream(new FileInputStream("d:\\student.obj"));
        Student s = (Student)is.readObject();
        System.out.println(s.getId());
        System.out.println(s.getName());
        System.out.println(s.getAddress());

3.序列化和反序列化的作用

序列化和反序列化其实也是java中的一种数据传输的机制:
1. 除了可以写入和读取对象以外,还可以写入和读取基本类型(int,long,boolean…) (读取和写入的顺序要保持一致,如果不一致,出现EOFException,如果没有更多内容,也会出现EOFException)
2. 建议在写入时最后一个对象使用null,这样读取时就可以根据读取的值是否为null来判断是否读取完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值