上次面试的时候 ,如何实现java 类的序列化,当时感觉这个问题很简单,我的回答是实现serizlizable 接口就好了,可以实现对象的持久化,看了看书,原来这样:

public class Serialize implements Serializable{

    /**
* java 序列化 详解
*/
private static final long serialVersionUID = 1L; private int num = 1390; public static void main(String[] args) { try {
FileOutputStream fileOutputStream = new FileOutputStream("d:/serialize.dat");
ObjectOutputStream oos = new ObjectOutputStream(fileOutputStream);
Serialize s = new Serialize();
oos.writeObject(s);
oos.flush();
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}


以上代码是输出实现了序列化的类到文件里,原来里面是这样的:
第一部分就是序列化的开头:
AC ED : 声明使用了序列化协议 。
00 05: 序列化协议版本。
73: 声明这是一个新的对象。
第二部分是要序列化的类的描述,在这里是serialize类
72 : 声明这里开始一个新的class
00 17 : Class 名字的长度是17个字节。
63...65 完整类名。
第三部分: 属性描述
第四部分: 父类描述
第五部分:属性项目的实际值
00 06 6E 则为1390的数值。 当父类继承Serializable 接口时,所有子类都 可以被序列化。
如果子类实现了,父类没有实现,父类中的属性不能序列化,不会报错,但数据会丢失。
如果序列化的属性是对象,这个对象也必须实现Serializable接口,否则会报错。
在序列化时,如果seralVersionUID被修改,那么反序列化时会失败。

最新文章

  1. OC中字符串的提取与替换-四种不同方法实现
  2. ubuntu12.04安装WineQQ2012
  3. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization
  4. UNIX标准化及实现之功能测试宏
  5. Style 的优先级
  6. C# mvc 验证码2
  7. 配置数据库连接池,Tomcat6.0 连接池的配置
  8. JSP(基础语法)
  9. java 中Map 使用
  10. UNIX环境高级编程——select和epoll的区别
  11. Excel—工作常用
  12. 树&堆
  13. 遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化
  14. Taro开发小程序移动地图固定中间获取地址
  15. public private protected default
  16. daemon_init函数:调用该函数把普通进程转变为守护进程
  17. 使用highcharts绘制美观的燃尽图
  18. 重装win10系统
  19. 什么是ip地址,什么是私有地址
  20. selinux介绍/状态查看/开启/关闭

热门文章

  1. Override和Overload的含义与区别
  2. vs2015使用低版本编译的openssl问题
  3. orcal 根据打分时间计算打分情况
  4. 全面解读PHP-数据结构
  5. Typography 字体
  6. 常用 tcpdump 抓包方式
  7. bat中if语句的用法
  8. database使用
  9. RTX数据表分析
  10. 使用Spring Initializr初始化SpringBoot项目