谁知道啥是Java序列化?如何实现序列化?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁知道啥是Java序列化?如何实现序列化?相关的知识,希望对你有一定的参考价值。
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。] 参考技术A 一、什么是序列化: 序列化理解成“打碎”是可以的,不过在书本上的名词就是将对象转换成二进制。 二、在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() ; ] 参考技术B 序列化是将对象状态转换为可保持或传输的格式的过程。说明白点就是你可以用对象输出流输出到文件.如果不序列化输出的话.很可能会乱!实现方式是实现java.io.Serializable接口.这个接口不需要实现任何具体方法.只要implements java.io.Serializable 就好了本回答被提问者采纳 参考技术C 举个风筝的例子,放过风筝后,我们会把风筝收起来,把支撑它的骨架拆开,方便我们存放,这就相当于我们Java中的序列化,等到下次你再把它组装起来,还可以放,这个过程就是解序列化;要实现序列化必须实现Serializable接口,目的是声明此类是可以被序列化的,自然基础此类的子类也自动的可以被序列化] 参考技术D 只需要两个单词,就可以搞定序列化操作。implements Serializable序列化操作一般用在网络传输的时候。表明这个被序列化的对象可以被“打碎”。为什么要“打碎”,就像把大的物体拆成小的更方便运输一个道理。举例:public class 摩天大楼 implements Serializabel..........如果想要搬运这样大的楼,可想你要有多大的车、多少人。来搬运他。麻烦的很啊。如果把它拆成一块一块的砖头来运的话,是不是方便多了。序列化其实就是这个道理。虽说例子举得有点问题。但是。道理是这样的!]
java中如何实现序列化,有啥意义
java 中实现序列化,只要实现Serializbale这个接口,那么这个类就能序列化了。序列化就是把对象转化为二进制编码,有两个作用1.用于网络传输。2.可以存储到硬盘中,用来保存。类对象都是在内存中的,当系统关闭后对象就没了,下次启动时重新生成对象,不能保存当时状态。
有序列化,就有反序列化,反序列化就是恢复当时状态的类对象。 参考技术A 实现Serializable接口就行了,这个接口只是一个标记接口,不提供任何方法,Java序列化意义就是把Java在内存中的对象按照一定的格式以字节流的方式传输到别的地方,相当于传输协议,不然就会造成接收端数据错乱。
就像我和你打电话,你只能听懂中文,我硬是用英文跟你说了一大堆,在你看来那些英文就是一堆乱码, 参考技术B 一般需要序列化的都是实体类,只需要实现Serializable接口即可,意义在让java对象能够存到硬盘内存上,同时还能取出来变成一个java对象,底层实现还是IO流,具体就不知道了,小白一个 参考技术C 首先我们要把准备要序列化类,实现 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() ;
参考技术D 序列化的过程就是对象写入字节流和从字节流中读取对象。
java对象序列化可以保留一个对象的数据,而且还可以递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的“深复制”,即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。
以上是关于谁知道啥是Java序列化?如何实现序列化?的主要内容,如果未能解决你的问题,请参考以下文章