对象的序列化与反序列化

来源:互联网 发布:工作流引擎数据库设计 编辑:程序博客网 时间:2024/06/05 03:55
gbk:中文占用2个字节,英文占用1个字节utf-8:中文占用3个字节,英文占用1个字节java是双字节编码:utf-16be:中文占用2个字节,英文占用2个字节
1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化2.序列化流(OjectOutputStream)是过滤流----writeObject反序列化流(ObjectInputStream)----readObject3.序列化接口(Serializable)对象必须实现序列化接口,才能进行序列化,否则将出现异常这个接口,没有任何方法,只是一个标准,使用transient关键字使指定的object元素不进行jvm默认的序列化对象实体类的序列化与反序列化public static void main(String[] args) throws IOException, Exception {String file = "F:/IO流/序列化/test.txt";// 1.对象的序列化/*ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));Student stu = new Student("10011", "张三 ", 20);oos.writeObject(stu);oos.flush();oos.close();*/// 2.反序列化ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));Student stu2 = (Student) ois.readObject();System.out.println(stu2);ois.close();}
父类实现序列化接口,其所有子类均无需再实现序列化接口也能被序列化。序列化中子父类构造函数的调用问题:对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用,如果已实现则不会被调用。初始化子类时父类构造方法会被递归调用

原创粉丝点击