问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java序列化有什么作用

发布网友 发布时间:2022-02-28 22:16

我来回答

1个回答

热心网友 时间:2022-02-28 23:45

1、序列化是干什么的?

简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

2、什么情况下需要序列化

a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;

3、当对一个对象实现序列化时,究竟发生了什么?

在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:

Foo myFoo = new Foo();
myFoo .setWidth(37);
myFoo.setHeight(70);

当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。

FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myFoo);

4、实现序列化(保存到一个文件)的步骤

a)Make a FileOutputStream
java 代码
FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream

java 代码
ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object

java 代码
os.writeObject(myObject1);
os.writeObject(myObject2);
os.writeObject(myObject3);
d) close the ObjectOutputStream

java 代码
os.close();

5、举例说明

java 代码
import java.io.*;

public class Box implements Serializable
{
private int width;
private int height;

public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}

public static void main(String[] args){
Box myBox = new Box();
myBox.setWidth(50);
myBox.setHeight(30);

try{
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

}

6、相关注意事项

a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
c)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:

1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现

把一个对象完全转成字节序列,方便传输。
就像你寄一箱饼干,因为体积太大,就全压成粉末紧紧地一包寄出去,这就是序列化的作用。
只不过JAVA的序列化是可以完全还原的。
所谓序列化其实就是将程序中的数据(对象)通过某种方式,保存到本地中。然后把Java对象转换为字节序列的过程称为对象的序列化; 对象的序列化主要有两种
java 为什么序列化

序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留...

java中如何实现序列化,有什么意义

序列化就是把对象转化为二进制编码,有两个作用1.用于网络传输。2.可以存储到硬盘中,用来保存。类对象都是在内存中的,当系统关闭后对象就没了,下次启动时重新生成对象,不能保存当时状态。有序列化,就有反序列化,反序列化就是恢复当时状态的类对象。

Java中为什么要序列化?什么时候用到序列化

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

java对象的序列化是什么意思

简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以 用自己的各种方法来保存Object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制、那就是序列化。2、什么情况下需要序列化?a)当你想把的内存中的对象保存到一个文件或者数据库中时候。b)当...

java序列化的意义

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

什么是java序列化

Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。

java序列化有什么作用?

有利于把一个Java对象变成字节流的形式传出去。有利于从一个字节流中恢复一个Java对象。有利于使用的java对象要在分布式中使用或者在rmi远程调用的网络中使用,实现java序列化接口。Java对象的序列化有两种方式:1、是相应的对象实现了序列化接口Serializable,这个使用的比较多,对于序列化接口Serializable接口...

java里实现了Serializable接口,序列化是什么意思呢

序列化是为了实现对象的持久化,与网络中对象的传递,可别序列化的 类也就是可以被objctStream操作,它可将类转换成二进制码,保存在 指定的文本文件中,或是通过网络从服务器传递到客户端,当想要恢 复对象的时候只要通过相应的objectStream就可以将对象完全的复原 在内存中,这样就实现了对象的持久化操作...

java持久化类为什么要实现序列化

序列化可以将一个复杂的对象转化为一维的数据,而这为持久化提供了很大的方便,因为文件就是一维的,将一维的东西写入文件自然比较方便。不过持久化是个很宽泛的概念,可以是写入文件,也可以是存入数据库,写入注册表等多种方式。其本意是延长对象或数据的生命周期,让其可以超越程序的生命周期,程序关闭...

django序列化是什么意思?

java中的序列化是什么意思序列化是将对象状态转换为可保持或传输的格式的过程。说白点就是你可以用对象输出流输出到文件。如果不序列化输出的话,很可能会乱。java中的序列化机制能够将一个实例对象(只序列化对象的属性值,而不会去序列化什么所谓的方法。)的状态信息写入到一个字节流中使其可以通过...

代码序列化有什么用 序列化对象 序列化能获取新的对象吗 java序列化和反序列化作用 java序列化和反序列化 java序列化id作用 java什么是序列化 java实体类为什么要序列化 java什么时候需要序列化
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求个七言绝句,每句以“红、尘、坐、伴”开头!谢谢 以伴开头的七字句子 谁能告诉我下仙剑仙剑奇侠传98柔情版蜀山那个镇妖塔那个迷宫的地图吗... 仙剑1镇妖塔最底层的七条龙怎么走,漩涡在哪?求图。 苹果手机买点券花了可以退吗? 苹果误订阅退款一般能成功吗 CF穿越火线游戏辅助助手哪个好 穿越火线什么挂可以自动开枪 载体连接物是什么东西?求详细解答 还有目的基因连接物是什么东西?_百 ... 高分求救 桌面文件被删除怎么恢复 java对象的序列化是什么意思 问一下 java中的序列化是什么意思?? 有什么作用?? Java序列化与反序列化是什么? 软件评测师上机考什么 计算机软考总分是多少 软考分数线是多少? 盐城特产是什么 江苏省盐城市有什么特产 盐城有什么特产啊? 盐城的土特产是什么? 江苏省盐城市土特产有什么 盐城的土特产是什么 盐城有哪些特产 盐城特产有哪些土特产? 盐城特产有哪些土特产可以带走 盐城特产有哪些土特产? 高级软件工程师和软件设计师是不是一样的? 国家工信部软件工程师认证和 软件设计师技能证书的区别和用处 软件设计工程师证书有何优势? 怎么注册一个新的 Java中如何实现序列化,有什么意义? java中什么类需要序列化 java 序列化有什么意义 如何申请第二个? 怎么申请第二个? CCNA、CCNP怎么考啊?怎么报名? 双卡怎样注册第二个 考思科的条件是什么? 怎么才能在申请第二个 思科ccie考试报名? 一个手机号怎么申请第二个 自学ccna怎么报名考试呢 关于思科考试? 我有一个了,还想再申请一个微信账号,怎么申请呢? 思科考试 怎样申请第二个 华为手机怎样注册第二个? 一个手机号怎么申请第二个? 一个手机号怎么申请第二个? JAVA的特点与优势有哪些?