通俗易懂的Java序列化原理
2024-08-30 11:30:59
序列化能干吗?
(1)通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里)
(2)利用序列化实现远程通信,即在网络上传送对象的字节序列。
网上搜索的都是这样的解释,抽象,难懂。
我当时看见这两问题的时候,我就有两个问题?
(1).txt,.java,.class文件我也没序列化,不也保存在银盘上了吗?我写的java对象没实现serializable,不也保存在我的硬盘上了吗?.java,.class文件我都看得见。
(2).java文件不也是二进制文件保存在硬盘上的吗?干嘛非得序列化?
上面的疑惑对也不对。
.class,.java这叫源代码,你开发的人才可以看见的。当别人运行你代码的时候,你会把源代码给他们吗,不可能,那你怎么保存运行中的数据呢?比如游戏的存档,.txt文件?怎么可能,你重启程序是需要读档的,.txt文件是会被修改的。序列化的对象是人读不懂的,只有机器反序列化才懂。现在知道为什么需要实现序列化到本地硬盘了。第一,你是用的outputstream写到本地的,这就要求保存到本地的对象必须能被序列化的,第二,你也不想让别人读懂修改。
网上传输问题,你传输数据,java中传输的数据必须是可以序列化的,比如你想通过网络传输对象,对象如果不序列化,你怎么传,传int i= 0,String a = “我”吗?你怎么可能传的过去,而且,如果你传的对象对方想在自己的Java虚拟机上的运行呢,序列化可以保证我反序列化不会出问题。
参考文献:
超有意思的问答
最新文章
- HTML CSS SPRITE 工具
- href和src的使用场景
- jquery简单动画
- 计算器软件的代码实现 (策略模式+asp.net)
- 使用HTML5/CSS3制作便签贴
- BZOJ 3224: Tyvj 1728 普通平衡树(BST)
- 【分享】深入浅出WPF全系列教程及源码
- 算法 - 乞讨n中位数(C++)
- 正则表达式:reg.test is not a function
- eastcom——eclipse中运行vtmserver项目
- (最完美)红米手机5的Usb调试模式在哪里打开的教程
- 【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
- 吴恩达机器学习笔记26-样本和直观理解1(Examples and Intuitions I)
- 升级到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑及解决方案
- 053 关于hive的存储格式
- SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle简单整合
- Python异常处理回顾与总结
- ExtJS 表单 submit时错误处理
- 谈谈SQL server的 worker threads-----微软亚太区数据库技术支持组 官方博客
- Eclipse注释配置