首先要说一下,本篇文章非本人所写,这里引用一下,仅用于个人学习,感谢原作者,如侵权,联系删除!!!
本文 Github开源项目:github.com/hansonwang99/JavaCollection中已收录,有详细自学编程学习路线、面试题和面经、编程资料及系列技术文章等,资源持续更新中...
文章来源于微信公众号CodeSheep ,作者hansonwong99
序列化是干啥用的?
序列化的原本意图是希望对一个Java对象作一下“变换”,变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外变换成字节序列也更便于网络运输和传播,所以概念上很好理解:序列化:把Java对象转换为字节序列。反序列化:把字节序列恢复为原先的Java对象。而且序列化机制从某种意义上来说也弥补了平台化的一些差异,毕竟转换后的字节流可以在其他平台上进行反序列化来恢复对象。
对象如何序列化?
然而Java目前并没有一个关键字可以直接去定义一个所谓的“可持久化”对象。对象的持久化和反持久化需要靠程序员在代码里手动显式地进行序列化和反序列化还原的动作。
举个例子,假如我们要对Student类对象序列化到一个名为student.txt的文本文件中,然后再通过文本文件反序列化成Student类对象:
1. student类定义:
publicclass Studentimplements Serializable {private String name;private Integer age;private Integer score; @Overridepublic String toString() {return "Student:" + '\n' + "name = " +this.name + '\n' + "age = " +this.age + '\n' + "score = " +this.score + '\n' ; }// ... 其他省略 ... }
2. 序列化
publicstaticvoid serialize( )throws IOException { Student student=new Student(); student.setName("CodeSheep")