Java序列化理解-Serialiable和Parcelable区别
一、什么是序列化和反序列化:
序列化和反序列化是一个过程,而不是什么接口,是把数据按照一定规则和格式保存下来,将来按照这种规则再把数据恢复回来。
注意: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区别相关推荐
- Java 深入理解深拷贝和浅拷贝区别
title: Java 深入理解深拷贝和浅拷贝区别 date: 2021-6-19 updated: 2021-6-19 tags: Java 深拷贝和浅拷贝 categories: 面试 Java ...
- java protostuff 好处,java序列化Protostuff和Serializable的区别
java序列化Protostuff和Serializable的区别 关注:146 答案:1 mip版 解决时间 2021-01-25 06:11 提问者你若离去丶巴掌扇去 2021-01-24 0 ...
- java 序列化理解_对Java Serializable(序列化)的理解和总结(二)
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 a,什么叫序列化和反序列化 b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 c,se ...
- 深入理解JAVA序列化
2019独角兽企业重金招聘Python工程师标准>>> 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件.那你最好再阅读该篇文章,文章对序列化进行了更深一 ...
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- Java序列化与数据传输
1)什么是序列化 ① 序列化:Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型. 堆内存中的j ...
- java 将3变为03,03 Java序列化引发的血案
1.前言 <手册>第 9 页 "OOP 规约" 部分有一段关于序列化的约定 [强制]当序列化类新增属性时,请不要修改 serialVersionUID 字段,以避免反序 ...
- 教你彻底学会Java序列化和反序列化
Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...
- 理论 | 教你彻底学会Java序列化和反序列化
这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...
最新文章
- 全国大学生智能车智能汽车竞赛车模检查规范
- Scala _07trait特性
- win32 disk imager使用后u盘容量恢复
- USACO Sorting a Three-Valued Sequence
- hdoj 1071 The Area 求面积
- Django 中文文档解析
- Cholesky Decomposition (Cholesky分解)
- 毕业论文排版(六)-三线表
- 下载Eclipse压缩包
- 2021最新Java学科全阶段视频教程(从入门到精通)
- 安装应用宝统一链接服务器,数据互通|安卓应用宝部分区服服务器数据互通维护公告...
- Python之freshman05
- 红米note4x装linux,红米Note4X怎么装卡/插卡 红米Note4X手机SIM卡安装图文教程
- 2019 11 28
- 欢乐颂之鸿蒙系统,《欢乐颂》:赵启平那么看不起曲筱绡,为何还爱她入骨?...
- 双网卡同时连接内网和外网的解决方案
- Thingsboard 2.5 版本发布
- sqlserver 求平均数,中位数,众数
- 并发编程之线程池的使用及扩展和优化
- 基于jeecgboot的flowable增加流程节点抄送功能
热门文章
- 【Web/Tools系列】在MacbookPro M1芯片笔记本上安装EMCC
- 【转】MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)...
- 电力系统短期负荷预测(Python代码实现)
- 关于编程里的那些ABC
- 联想电脑如何改w ndows更新,联想电脑装32位win7系统设置更改默认浏览器的图文办法...
- 百度实习测开岗位面试
- OpenCV实现人脸识别
- 发那科机器人电柜没电怎么回事_发那科数控机床电池没电导致程序丢失如何恢复...
- 微信技术专家:10亿人在用的微信支付系统架构实践!20页ppt详解
- 手写实现迷你版 Tomcat