一、什么是序列化和反序列化:

序列化和反序列化是一个过程,而不是什么接口,是把数据按照一定规则和格式保存下来,将来按照这种规则再把数据恢复回来。

注意:Serialiable和Parcelable仅仅是实现序列化的方案之一

简单总结这俩就是:
Serialiable Java独有的,序列化接口  规则是JDK规则,序列化过程原理:需要大量IO和反射
Parcelable   Android独有的,序列化接口,需要程序员实现过程,是内存的序列化,存的是值,不会保存类和属性类型,序列化过程不需要IO操作,写的顺序要和读的顺序一样

二、Android中为什么推荐使用Parcelable?

Serialiable 看源码是个空接口 用来干嘛的呢,这样的接口Java一般用来做标记,对这个类打上标记,就可以调用ObjectOutputStream.write方法

将内存中的类写入文件,需要实现这个接口,将类、和类中的属性、值,一起打包写到文件中

Parcelable 看源码截图中,定义的int类型数据mData,调用parcel的writeInt(mData)方法将属性值变成4个字节传输,存到parcel中,读的时候通过parcel.readInt();恢复mData数据,

如果用parcel接口序列化和反序列化顺序是一致的。

注意:如果用Parcelable接口序列化到文件,别人拿到文件,没办法恢复类和类型,因为Parcelable只存值,不会像Serialiable接口那样存类以及类中的一切属性,

并且作用范围仅限于android内存

三、总结

1、在使用内存的时候,Parcelable比Serializable性能
2、Serializable在序列化的时候采用了大量的反射,并且会产生大量的临时变量,从而产生过高的负载,而Parcelable没有这种情况。
3、但是,Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点, 也不提倡用,但在这种情况下,还是建议你用Serializable 。
4、Java的序列化无法满足Android中进程间通信的要求,所以Android团队用Parcelable来解决这个问题,Parcelable实现了类成员中明确的序列化需求,但却比类直接地序列化更快。

Java序列化理解-Serialiable和Parcelable区别相关推荐

  1. Java 深入理解深拷贝和浅拷贝区别

    title: Java 深入理解深拷贝和浅拷贝区别 date: 2021-6-19 updated: 2021-6-19 tags: Java 深拷贝和浅拷贝 categories: 面试 Java ...

  2. java protostuff 好处,java序列化Protostuff和Serializable的区别

    java序列化Protostuff和Serializable的区别 关注:146  答案:1  mip版 解决时间 2021-01-25 06:11 提问者你若离去丶巴掌扇去 2021-01-24 0 ...

  3. java 序列化理解_对Java Serializable(序列化)的理解和总结(二)

    遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 a,什么叫序列化和反序列化 b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 c,se ...

  4. 深入理解JAVA序列化

    2019独角兽企业重金招聘Python工程师标准>>> 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件.那你最好再阅读该篇文章,文章对序列化进行了更深一 ...

  5. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  6. Java序列化与数据传输

    1)什么是序列化 ① 序列化:Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型. 堆内存中的j ...

  7. java 将3变为03,03 Java序列化引发的血案

    1.前言 <手册>第 9 页 "OOP 规约" 部分有一段关于序列化的约定 [强制]当序列化类新增属性时,请不要修改 serialVersionUID 字段,以避免反序 ...

  8. 教你彻底学会Java序列化和反序列化

    Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...

  9. 理论 | 教你彻底学会Java序列化和反序列化

    这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...

最新文章

  1. 全国大学生智能车智能汽车竞赛车模检查规范
  2. Scala _07trait特性
  3. win32 disk imager使用后u盘容量恢复
  4. USACO Sorting a Three-Valued Sequence
  5. hdoj 1071 The Area 求面积
  6. Django 中文文档解析
  7. Cholesky Decomposition (Cholesky分解)
  8. 毕业论文排版(六)-三线表
  9. 下载Eclipse压缩包
  10. 2021最新Java学科全阶段视频教程(从入门到精通)
  11. 安装应用宝统一链接服务器,数据互通|安卓应用宝部分区服服务器数据互通维护公告...
  12. Python之freshman05
  13. 红米note4x装linux,红米Note4X怎么装卡/插卡 红米Note4X手机SIM卡安装图文教程
  14. 2019 11 28
  15. 欢乐颂之鸿蒙系统,《欢乐颂》:赵启平那么看不起曲筱绡,为何还爱她入骨?...
  16. 双网卡同时连接内网和外网的解决方案
  17. Thingsboard 2.5 版本发布
  18. sqlserver 求平均数,中位数,众数
  19. 并发编程之线程池的使用及扩展和优化
  20. 基于jeecgboot的flowable增加流程节点抄送功能

热门文章

  1. 【Web/Tools系列】在MacbookPro M1芯片笔记本上安装EMCC
  2. 【转】MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)...
  3. 电力系统短期负荷预测(Python代码实现)
  4. 关于编程里的那些ABC
  5. 联想电脑如何改w ndows更新,联想电脑装32位win7系统设置更改默认浏览器的图文办法...
  6. 百度实习测开岗位面试
  7. OpenCV实现人脸识别
  8. 发那科机器人电柜没电怎么回事_发那科数控机床电池没电导致程序丢失如何恢复...
  9. 微信技术专家:10亿人在用的微信支付系统架构实践!20页ppt详解
  10. 手写实现迷你版 Tomcat