通俗易懂的Java序列化原理

序列化能干吗?
(1)通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里)
(2)利用序列化实现远程通信,即在网络上传送对象的字节序列。

网上搜索的都是这样的解释,抽象,难懂。
我当时看见这两问题的时候,我就有两个问题?
(1).txt,.java,.class文件我也没序列化,不也保存在银盘上了吗?我写的java对象没实现serializable,不也保存在我的硬盘上了吗?.java,.class文件我都看得见。
(2).java文件不也是二进制文件保存在硬盘上的吗?干嘛非得序列化?

上面的疑惑对也不对。
.class,.java这叫源代码,你开发的人才可以看见的。当别人运行你代码的时候,你会把源代码给他们吗,不可能,那你怎么保存运行中的数据呢?比如游戏的存档,.txt文件?怎么可能,你重启程序是需要读档的,.txt文件是会被修改的。序列化的对象是人读不懂的,只有机器反序列化才懂。现在知道为什么需要实现序列化到本地硬盘了。第一,你是用的outputstream写到本地的,这就要求保存到本地的对象必须能被序列化的,第二,你也不想让别人读懂修改。

网上传输问题,你传输数据,java中传输的数据必须是可以序列化的,比如你想通过网络传输对象,对象如果不序列化,你怎么传,传int i= 0,String a = “我”吗?你怎么可能传的过去,而且,如果你传的对象对方想在自己的Java虚拟机上的运行呢,序列化可以保证我反序列化不会出问题。

参考文献:
超有意思的问答

原文地址:https://www.cnblogs.com/loren-Yang/p/7466119.html