什么是序列化,在java中如何实现序列化?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是序列化,在java中如何实现序列化?相关的知识,希望对你有一定的参考价值。

一、什么是序列化:
序列化理解成“打碎”是可以的,不过在书本上的名词就是将对象转换成二进制。

二、在java中如何实现序列化:
首先我们要把准备要序列化类,实现 Serializabel接口
例如:我们要Person类里的name和age都序列化
import java.io.Serializable;

public class Person implements Serializable //本类可以序列化
private String name ;
private int age ;

public Person(String name,int age)
this.name = name ;
this.age = age ;

public String toString()
return "姓名:" + this.name + ",年龄" + this.age ;



然后:我们将name和age序列化(也就是把这2个对象转为二进制,统族理解为“打碎”)
package org.lxh.SerDemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream ;

public class ObjectOutputStreamDemo //序列化

public static void main(String[] args) throws Exception
//序列化后生成指定文件路径
File file = new File("D:" + File.separator + "person.ser") ; ObjectOutputStream oos = null ;
//装饰流(流)
oos = new ObjectOutputStream(new FileOutputStream(file)) ;
//实例化类
Person per = new Person("张三",30) ; oos.writeObject(per) ;//把类对象序列化
oos.close() ;

参考技术A 只需要两个单词,就可以搞定序列化操作。
implements Serializable
序列化操作一般用在网络传输的时候。表明这个被序列化的对象可以被“打碎”。
为什么要“打碎”,就像把大的物体拆成小的更方便运输一个道理。
举例:
public class 摩天大楼 implements Serializabel..........
如果想要搬运这样大的楼,可想你要有多大的车、多少人。来搬运他。麻烦的很啊。如果把它拆成一块一块的砖头来运的话,是不是方便多了。序列化其实就是这个道理。
虽说例子举得有点问题。但是。道理是这样的!

什么是java序列化,如何实现java序列化?

在java中只要一个类实现了Serializable接口的类就被认为是序列化的类,这种类的对象就是序列化的对象
只有被序列化的数据才允许被存储到文件、数据库之中或者通过网络协议进行传输,没有被序列化的数据是不能存储到硬盘上,不能通过网络协议进行网络传输
参考技术A

序  列 化:  指把堆内存中的Java对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络的节点(在网络上传输).我们把这个过程称之为序列化.

反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象的过程.

为什么要做序列化:

1):在分布式系统中,需要共享的数据的JavaBean对象,都得做序列化,此时需要把对象再网络上传输,此时就得把对象数据转换为二进制形式.以后存储在HttpSession中的对象,都应该实现序列化接口(只有实现序列化接口的类,才能做序列化操作).

2):服务钝化:如果服务发现某些对象好久都没有活动了,此时服务器就会把这些内存中的对象,持久化在本地磁盘文件中(Java对象-->二进制文件).如果某些对象需要活动的时候,现在内存中去寻找,找到就使用,找不到再去磁盘文件中,反序列化我们得对象数据,恢复成Java对象.

需要做序列化的对象的类,必须实现序列化接口:java.io.Serializable接口(标志接口[没有抽象方法]).

底层会判断,如果当前对象是Serializable的实例,才允许做序列化.    boolean   ret = Java对象  instanceof  Serializable;

在Java中大多数类都已经实现Serializable接口.


参考技术B 将java对象状态以字节流的形式保存或者读取,叫做序列化与反序列化。

实现序列化必须将要保存的类实现Serializable接口,然后调用OutputStream的writeObject方法实现序列化。

以上是关于什么是序列化,在java中如何实现序列化?的主要内容,如果未能解决你的问题,请参考以下文章

谁知道啥是Java序列化?如何实现序列化?

什么是java序列化,如何实现java序列化?

什么是序列化? 如何实现(反)序列化 序列化的应用

什么是序列化?如何实现序列化?

什么是序列化? 如何实现(反)序列化 序列化的应用

什么是序列化? 如何实现(反)序列化 序列化的应用