利用序列化流将一个对象的整体转换为二进制的数据,并且存储到文件中,将对象永久的存入一个文件,叫做序列化,读取的过程叫做反序列化。
对象是需要封装的,为了实现对象的序列化,我们将对象实现了一个序列化接口—Serializable
这个接口中没有方法,就是一个规范,只要实现了这个接口,那么序列化的时候就不会出现问题
序列化版本号:序列化ID(serialVersionUID),用于记录对象的类型,每个被序列化的操作对象操作其对象的ID与接收类型的ID必须一致。序列化的ID和反序列化的ID必须一致
、
序列化流:
ObjectOutputStream:序列化流(对象输出流)
-public final void writeObject(object obj)
反序列化流:
ObjectInputStream:反序列化流(对象输入流)
-public final Object readObject()
封装一个开发级别的实体类(标准的)
1、必须实现序列化接口—声明UID
2、属性私有化,并且声明get/set
3、声明有参数和无参数构造函数
4、重写hashCode和equals方法
5、重写toString方法
扩展
transient关键字在序列化的使用:是一个修饰符,被修饰的属性可以在序列化中被忽略。在某些特定业务会用到。
打印流(自动刷新流):只有输出流,没有输入流!!!
printStream:字节打印流,调用println方法自动刷新
printWriter:字节打印流,指定自动化刷新关闭后,调用println方法自动刷新(自带回车),无需手动调用flush方法
在网络传输中使用比较多