1.概念

序列化:把Java对象转换为字节序列的过程
反序列化:把字节序列恢复为Java对象的过程

2.用途

对象的序列化主要有两种用途
1.把对象的字节码永久保存到硬盘上,通常放在一个文件中
2.在网络上传送对象的字节序列

3.对象序列化

只有实现了Serializable和Externalizeble的接口的类才能实现序列化。
Java.IO.ObjectOutputStream代表对象输出流。writeObject(Object obj)方法可对参数指定的obj对象进行序列化。
Java.IO.ObjectInputStream代表对象输入流,它的readObject()方法可以反序列化。

4.transient关键字的作用

在不需要序列化的属性前添加transient,序列化对象的时候,这个属性就不会被序列化。

5.被transient关键字修饰过的变量真的不能序列化吗

实现了Externalizable接口即使用transient关键字修饰也不起作用。

6.静态变量能被序列化吗?没有被transient关键字修饰呢

静态变量是不会被序列化的,即使没有transient。
在JDK8之前静态成员变量存放在方法区;JDK8之后取消了永生代,取而代之的是元空间,永生代中的静态成员变量迁移到了堆中。方法区是JVM的规范,永生代是方法区的具体实现)
而序列化是写到磁盘上的,所以JVM查找静态变量的值,是从全局查找的,而不是磁盘上。

7.总结

Java的transient关键字为我们提供了便利,只需要实现Serializable接口,将不需要序列化的属性添加关键字transient,序列化对象的时候就不会序列化到指定目的地。

什么是序列化?如何实现序列化相关推荐

  1. java 对象怎么序列化,java对象序列化总结

    java对象序列化小结 百度百科上介绍序列化是这样的: 序列化 (Serialization): 将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储 ...

  2. 解决Python自带的json序列化工具不能序列化datetime类型数据问题

    解决Python自带的json序列化工具不能序列化datetime类型数据问题 参考文章: (1)解决Python自带的json序列化工具不能序列化datetime类型数据问题 (2)https:// ...

  3. Java序列化闲聊:序列化和Json

    前言 其实我挺纠结的,在纠结到底要不要写这个模块的博客,因为序列化这个模块说简单,按照一些人的说法,其实也就是调两个函数的事情,说困难,铺开就让人感觉范围很广. 序列化 什么是序列化,我们在编程的时候 ...

  4. Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑

    前言 上一篇已经介绍了优雅的操作Redis: [小家Spring]Spring Boot中使用RedisTemplate优雅的操作Redis,并且解决RedisTemplate泛型注入的问题.本篇着重 ...

  5. json 序列化 java_Java JSON序列化杂谈

    在C#中序列化是比较容易的,如果不用第三方的类库,那么C#提供的两个对象也够我们使用,一般的操作是定义一个不含有方法的类,这个类里面定义了要序列化的对象的属性,因为我C#用的比较多,这里直接给出泛型, ...

  6. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  7. java get方法不序列化_java常用序列化与反序列化方法

    序列化工具类 序列化即将对象序列化为字节数组,反序列化就是将字节数组恢复成对象. 主要的目的是方便传输和存储. 序列化工具类: public class SerializeUtil { private ...

  8. Atitit php序列化 php的serialize序列化和json序列化

    Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...

  9. java序列化深克隆_克隆可序列化和不可序列化的Java对象

    java序列化深克隆 开发人员经常依靠3d方库来避免重新发明轮子,尤其是在Java世界中,Apache和Spring这样的项目如此盛行. 在处理这些框架时,我们通常很少或根本无法控制其类的行为. 这有 ...

  10. 使用不可序列化的属性序列化Java对象

    人们可能有多种原因想要使用自定义序列化而不是依赖Java的默认序列化. 最常见的原因之一是为了提高性能,但是编写自定义序列化的另一个原因是不支持默认序列化机制. 具体来说,如本博文所述,自定义序列化可 ...

最新文章

  1. Nginx的配置文件
  2. 提交svn的时候,提示丢失了预定增加的xxxx
  3. java 注解 demo_JAVA语言注解概念使用及Demo讲解
  4. Android Studio如何发布APK
  5. 11.19 rpm:RPM包管理器
  6. Masm for Windows集成开发环境编写汇编程序
  7. 在Java中给出的时间
  8. RequestDispatcher对象的应用-请求包含
  9. TensorFlow:模型的保存与恢复(Saver)
  10. python怎么读取中文文件-Python3 解决读取中文文件txt编码的问题
  11. vscode插件开发总结
  12. java js加密_JS加密解密
  13. 三级java_java三级(最全的题库).doc
  14. ceph的 cache tier实现分析
  15. 解决OneNote 无法粘贴图像 的问题
  16. Oracle数据更新
  17. Unity模型动画骨骼错位解决办法
  18. MYSQL——MYSQL中常见的数据库引擎
  19. sqlserver批量(部分)导出一张表中的数据
  20. 【Beta阶段】第二次Scrum Meeting

热门文章

  1. Unity对象池技术
  2. linux防火墙(四)—— SNET和DNET原理及应用
  3. 箭头函数与function的区别
  4. nginx非root用户使用1024以下端口
  5. 性能测试的环境以及测试数据构造
  6. 三种方式,教你优雅的替换if-else语句!
  7. hide show toggle
  8. 自动驾驶中camera方案(三)max96712
  9. 海贼王热血航线服务器维护4月,《航海王热血航线》4月29日停服更新公告
  10. 百度AI市场热品试用 | 迪威泰单目宽动态人脸识别相机