感悟网 导航

Java中为什么要序列化?什么时候用到序列化? 什么是序列化,在java中如何实现序列化?

作者&投稿:逯典 (若有异议请与网页底部的电邮联系)
java中为什么要序列化?什么时候序列化。~

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

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

二、在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() ;
}
}

序列化是一种用来处理对象流的机制
,所谓对象流就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流;

什么时候使用序列化:

一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。

二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。

序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。
例如:hibernate中实体类的钝化就是将类序列化后存入磁盘并释放内存空间。

对象、文件、数据,有许多不同的格式,很难统一传输和保存
序列化以后就都是字节流了,无论原来是什么东西,都能变成一样的东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化还原,这样对象还是对象,文件还是文件

因为JAVA中要将对象序列化 为 流 的 形式进行传输

这个比较专业,真不是一二句话能说清的,建议买参考书。

《Java中为什么要序列化?什么时候用到序列化?》
答:序列化是一种用来处理对象流的机制 ,所谓对象流就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Seri...

《java中什么是序列化和反序列化?》
答:在Java的世界里,序列化和反序列化是两个关键概念,它们犹如数据的守护者,确保对象在存储和网络传输中的持久化与一致性。简单来说,序列化是将Java对象转化为字节序列,而反序列化则是将这些字节序列恢复为对象,以满足持久化和跨平台交互的需求。接口与实现的艺术 - Serializable:Java中的标准序列化接...

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

《java 中的序列化是什么意思?有什么好处》
答:序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。序列化是针对自定义类型或者零散数据,好处就是让数据方便存储和传输(传递),你可以理解为将零散的字母变成一个字符串(当然实际序列化过程并不是这么简单),可以统一存储和传输,而标准序列化传递后,还可以依次读取出来。序列化...

《java序列化是什么意思?》
答:Java是一种面向对象的程序设计语言,它涉及许多复杂的数据类型和结构。为了便于在程序之间传输数据并保留其状态,Java序列化技术应运而生。Java序列化是将Java对象转换为一系列字节的过程,以便在不同程序之间传输和存储。这些字节可以随后被传输到另一个程序,该程序将反序列化字节并重构原始Java对象。Java...

《java序列化的意义》
答:持久化存储,对象克隆等。通过将对象Java序列化为字节流,可以将对象持久化存储到文件、数据库或网络中。这意味着对象的状态可以在不同的程序或计算机之间共享和传输。通过Java序列化和反序列化,可以创建一个对象的副本。这对于实现深拷贝和浅拷贝非常有用。

《java 序列化是什么意思?》
答:Java序列化是指将一个Java对象转化为字节序列的过程,以便在网络上传输或者将其保存到磁盘上。序列化的过程中,对象的状态信息会被转化为字节流,保存在磁盘上或者通过网络传输到另一个地方,当需要的时候再反序列化为Java对象。通过序列化,我们可以方便地在分布式系统中传输对象的状态信息,或者将对象在...

《什么是java序列化?如何实现java序列化?Serializable接口的作用是什么...》
答:帮我们做,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。需要被序列化的类必须实现Serializable接口,该接口是一个mini接口,其中没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的。

《求大神,java通常在什么情况下用到序列化?》
答:1、序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)...

《什么是java的序列化和反序列化》
答:1、什么是序列化?为什么要序列化?Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程。我们都知道,在进行浏览器访问的时候,我们看到的文本、图片、音频、视频等都是通过二进制序列进行传输的,那么如果我们需要将Java对象进行传输的时候,是不是也应该先将...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网