Java基础 (12) - 序列化

1、序列化是干什么的?
内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。

2、什么情况下序列化
a、对象需要持久化 (硬盘or数据库)
??? b、网络传输 (套接字orRMI)
c、在进程间传递对象

3、序列化ID的作用
java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。

4、序列化机制
a、保存到磁盘的所有对象都获得一个序列号(1, 2, 3等等)
b、当要反序列化保存一个对象时,先检查该对象是否被保存了。
c、如果以前保存过,只需写入"与已经保存的类具有相同序列号的对象"的一样的标记就可,否则,保存该对象。

5、序列化方式
a、Serializable
b、Externalizable (类似android Parcelable)

5、其它
a、支持序列化和反序列化的基本类型有:String,Array,Enum和Serializable。类中的静态变量不会序列化
b、transient来修饰不想要序列化的变量
c、 反序列化 ->ObjectOutPutStream(FileOutPutStream)

参照:https://blog.csdn.net/qq_16628781/article/details/70049623
https://www.cnblogs.com/csguo/p/7571741.html

原文地址:https://blog.51cto.com/4397014/2436231

时间: 2024-08-02 04:33:44

Java基础 (12) - 序列化的相关文章

Java基础12 类型转换与多态(转载)

类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是一种强类型(strongly typing)语言,它会对类型进行检查.如果我们错误的使用类型,将造成错误. 比如在下面的Test类中,我们将一个Cup类对象赋予给aPerson类引用: public class Test{    public static void main(String[] ar

Java基础12:深入理解Class类和Object类

Java基础12:深入理解Class类和Object类 Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类.Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建. 说白了就是: Class类也是类的一种,只是名字和class关键字高度相似.Java是大小写敏感的语言.

【Java基础】序列化与反序列化深入分析

一.前言 复习Java基础知识点的序列化与反序列化过程,整理了如下学习笔记. 二.为什么需要序列化与反序列化 程序运行时,只要需要,对象可以一直存在,并且我们可以随时访问对象的一些状态信息,如果程序终止,那么对象是肯定不会存在的,但是有时候,我们需要再程序终止时保存对象的状态信息,之后程序再次运行时可以重新恢复到之前的状态,如,玩家玩游戏退出时,需要保存玩家的状态信息(如等级.装备等等),之后玩家再此登入时,必须要恢复这些状态信息.我们可以通过数据库手段来达到这个保存状态的目的,在Java中,我

Java基础:序列化(Serializable)与反序列化

在学习IO中的ObjectOutputStream和ObjectInputStream时,会涉及到序列化和反序列化的应用,那么它们是什么? 一.概念 序列化:把对象转换为字节序列的过程,叫做对象的序列化. 反序列化:把字节序列恢复为对象的过程,叫做对象的反序列化. 二.作用 主要有两种用途: 1.把对象的字节序列永久保存在硬盘中,也就是把内存中的数据(对象)持久化处理. 2.可以在网络上传输对象的字符序列,对象不再局限于本地使用. 无论那种用途,实际上都是为了保存在内存中的各种对象的状态(也就是

Java基础之序列化详解

相关定义及用途 java序列化(又叫串行化)技术可以使你将一个对象的状态写入一个Byte流里,并且可以从其他地方把该Byte流里的数据读出来,重新构造一个相同的对象.这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库.文件等系统里.java的序列化机制是RMI(远程方法调用).EFB等技术的技术基础. 用途:利用对象的序列化实现保存应用程序的当前工作状态,下次再启动的是时候将自动恢复到上次执行的状态. 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可

JAVA基础之序列化与反序列化

序列化和反序列化: 把对象转化为字节序列的过程称为序列化: 把字节序列恢复为对象的过程称为对象的反序列化: 方法: Java.io.ObjectOutputStream代表对象的输出流,writeObject(Object obj)方法对参数对象进行序列化,把得到的字节序列写到一个目标输出流中. Java.io.ObjectInputStream代表对象的输入流,readObject()方法可以从一个源输入流中读取字节序列,并转化为一个对象,将其返回. 只有实现Serializable和Exte

java基础之 序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.       把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器

Java基础教程——序列化

序列化 序列化:Serialize,将Java对象写入IO流(可以保存在数据库,文件等) 反序列化:Deserialize,从IO流中读取并恢复Java对象. 这么理解:序列化就是把对象封印起来,反序列化就是解封. 对象中包含的不仅仅是字符,更多的是非字符,因此需要使用字节流. 所有能在网上传输的对象的类都应该是可序列化的,否则程序就会出现异常. 实现Serializable接口 这个接口里面什么都没有,是一个标记接口,表明一个对象是可以序列化的. public interface Serial

Java基础12 类型转换与多态

链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们之前使用类创造新的类型(type),并使用继承来便利我们创建类的过程.我将在这一讲中深入类型,并介绍多态(polymorphism)的概念. 类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见