java 序列化/反序列化

原创 2018年04月17日 18:28:46

1.基本概念

序列化:对象转换成字节序列

反序列化:字节序列转换成对象

2.为什么要序列化?

(1)将一个对象持久化到文件中;

(2)一个对象需要进行远程传输的时候。(存入数据库)

3.怎么序列化?

前提条件:只有实现了 Serializable 或 Externalizable 接口的类的对象才能被序列化,否则抛出异常。

具体实现:在满足前提条件的情况下,怎么序列化?

(1)若仅实现Serializable,则可以按照以下方式进行序列化和反序列化

ObjectOutputStream采用默认的序列化方式,对对象的非transient的实例变量进行序列化。

ObjcetInputStream采用默认的反序列化方式,对对象的非transient的实例变量进行反序列化。

下面为部分核心代码:  

      Student stu = new Student("zxh1",11,3);

         File file = new File("F:/zhouxihua/student.txt");
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream fileStream = new FileOutputStream(file);
ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);
objectStream.writeObject(stu);
fileStream.close();

objectStream.close();

(2)若类不仅实现了Serializable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out),则采用以下方式进行序列化与反序列化。
ObjectOutputStream调用对象的writeObject(ObjectOutputStream out)的方法进行序列化。
ObjectInputStream会调用对象的readObject(ObjectInputStream in)的方法进行反序列化。

(3)若类实现了Externalnalizable接口,且类必须实现readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,则按照以下方式进行序列化与反序列化。
ObjectOutputStream调用对象的writeExternal(ObjectOutput out))的方法进行序列化。
ObjectInputStream会调用对象的readExternal(ObjectInput in)的方法进行反序列化。

时间序列(R语言处理金融序列)

-
  • 1970年01月01日 08:00

Java序列化与反序列化

  • 2010年08月16日 16:11
  • 346KB
  • 下载

java序列化和反序列化

  • 2010年01月07日 02:21
  • 166KB
  • 下载

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 什么叫序列化和反序列化 为啥要实现这个 Serializable 接口,也就是为啥要序列化 serialVersi...
  • qq_27093465
  • qq_27093465
  • 2017-11-28 18:40:12
  • 7691

java中的序列化(Serializable)和反序列化

JAVA序列化与反序列化就是JAVA对象与一串字节流之间的相互转换, 我们在程序中创建的JAVA对象只存在于JVM中, 当程序退出时, 这些对象也就消失了, 而序列化正是为了将这些对象保存起来以仅将来...
  • jason_279
  • jason_279
  • 2016-10-27 16:37:10
  • 9151

序列化和反序列化二叉树(java版)

【题目描述】请实现两个函数,分别用来序列化和反序列化二叉树【解题思路1】 //1. 利用前序遍历序列化二叉树,然后从记录的字符串中反序列化二叉树。 //2. 遇到空节点需要用特殊字符加以标记。如“...
  • ouyangyanlan
  • ouyangyanlan
  • 2017-06-06 11:15:04
  • 2339

java序列化与反序列化 代码示例

1.序列化的对象 /**  * 需要序列化的对象 实体类 需要继承Serializable  *   * @author lm 说明:1.序列化不会保存静态变量,因为静态变量是对象的状态 2....
  • qq_36291682
  • qq_36291682
  • 2017-05-12 08:50:30
  • 1135

Java中的基础----序列化与反序列化的作用

Java提供两种对象持久化的方式,分别序列化和外部序列化。 1)序列化(Serialization):         在分布式环境下,无论是何种数据,都会以二进制序列的形式在网络上传输。...
  • Emira_J
  • Emira_J
  • 2016-05-05 14:23:10
  • 3698

java 常用序列化和反序列化框架使用demo

package com.baidu.test; import java.io.Serializable; import java.util.List; import org.msgpack.ann...
  • earbao
  • earbao
  • 2015-07-16 16:56:05
  • 7338

Java之Serializable/Externalizable序列化和反序列化

Java之Serializable/Externalizable序列化和反序列化文章链接:知识点: 序列化和反序列化介绍; 为什么需要序列化和反序列化; Serializable接口序列化和反序列化;...
  • qq_16628781
  • qq_16628781
  • 2017-04-11 11:31:47
  • 689
收藏助手
不良信息举报
您举报文章:java 序列化/反序列化
举报原因:
原因补充:

(最多只允许输入30个字)