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

什么是java的序列化和反序列化

发布网友 发布时间:2023-01-10 02:48

我来回答

1个回答

热心网友 时间:2023-09-18 00:48

1、什么是序列化?为什么要序列化?
Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程。
我们都知道,在进行浏览器访问的时候,我们看到的文本、图片、音频、视频等都是通过二进制序列进行传输的,那么如果我们需要将Java对象进行传输的时候,是不是也应该先将对象进行序列化?答案是肯定的,我们需要先将Java对象进行序列化,然后通过网络,IO进行传输,当到达目的地之后,再进行反序列化获取到我们想要的对象,最后完成通信。
2、如何实现序列化
2.1、使用到JDK中关键类 ObjectOutputStream 和ObjectInputStream
ObjectOutputStream 类中:通过使用writeObject(Object object) 方法,将对象以二进制格式进行写入。
ObjectInputStream 类中:通过使用readObject()方法,从输入流中读取二进制流,转换成对象。
2.2、目标对象需要先实现 Seriable接口
我们创建一个Student类:
public class Student implements Serializable {
private static final long serialVersionUID = 3404072173323892464L;
private String name;
private transient String id;
private String age;

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", age='" + age + '\'' +
'}';
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public Student(String name, String id) {
System.out.println("args Constructor");
this.name = name;
this.id = id;
}

public Student() {
System.out.println("none-arg Constructor");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

}

代码中Student类实现了Serializable 接口,并且生成了一个版本号:
private static final long serialVersionUID = 3404072173323892464L;

首先:
1、Serializable 接口的作用只是用来标识我们这个类是需要进行序列化,并且Serializable 接口中并没有提供任何方法。
2、serialVersionUid 序列化版本号的作用是用来区分我们所编写的类的版本,用于判断反序列化时类的版本是否一直,如果不一致会出现版本不一致异常。
3、transient 关键字,主要用来忽略我们不希望进行序列化的变量
2.3、将对象进行序列或和反序列化
如果你想学习Java可以来这个群,首先是一二六,中间是五三四,最后是五一九,里面有大量的学习资料可以下载。
2.3.1 第一种写入方式:

public static void main(String[] args){
File file = new File("D:/test.txt");
Student student = new Student("孙悟空","12");
try {
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
outputStream.writeObject(student);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}

try {
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file));
Student s = (Student) objectInputStream.readObject();
System.out.println(s.toString());
System.out.println(s.equals(student));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

创建对象Student ,然后通过ObjectOutputStream类中的writeObject()方法,将对象输出到文件中。
然后通过ObjectinputStream 类中的readObject()方法反序列化,获取对象。
2.3.2 第二种写入方式:
在Student 类中实现writeObject()和readObject()方法:
private void writeObject(ObjectOutputStream objectOutputStream) throws IOException {
objectOutputStream.defaultWriteObject();
objectOutputStream.writeUTF(id);

}

private void readObject(ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException {
objectInputStream.defaultReadObject();
id = objectInputStream.readUTF();
}

通过这中方式进行序列话,我们可以自定义想要进行序列化的变量,将输入流和输出流传入对线实例中,然后进行序列化以及反序列化。
什么是java的序列化和反序列化?

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

非结构化数据如何可视化呈现?

通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...

序列化和反序列化,怎么保证数据的正确性

1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上...

浅谈Java对象的序列化和反序列化

把Java对象转换为字节序列的过程称为对象的序列化 把字节序列恢复为Java对象的过程称为对象的反序列化 对象的序列化主要有两种用途 ) 把对象的字节序列永久地保存到硬盘上 通常存放在一个文件中 ) 在网络上传送对象的字节序列 一 JDK类库中的序列化API java io ObjectOutputStream代表对象输出流 它的...

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

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

java序列化的优点和缺点是什么?

序列化是什么:序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节...

在JAVA中什么叫序列化和反序列化?

java对象实现了序列化就可以以对象的形式在流中传输。不管是文件流,还是Socket流都可以 用ObjectInputStream ObjectOutputStream 来读写对象。并不是所以类都可以序列化,一般需要序列化的对象是那些实体类。什么Bean,pojo,vo貌似都是一个意思吧。。。还是有一些对象是不能序列化的,Socket对象是不能的...

java序列化Protostuff和Serializable的区别

序列化就是将Java Object转成byte[];反序列化就是将byte[]转成Java Object。Java自带序列化机制java.io.Serializable 标识一个对象需要系列化,该对象类型需要实现 Serializable 接口。1,序列化的类型和反序列化的类型的序列化ID必须一致(远程信息交换时)。2,静态数据不会被序列化,Transient关键字修饰...

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

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

什么是序列化什么是反序列化

序列化是将对象的状态信息转换为可存储或传输形式的过程。反序列化则是从这种形式中提取数据,并恢复对象的状态,这个过程不考虑对象的访问性规则。脚本是一种扩展了批处理文件的程序,通常以纯文本格式保存。计算机脚本是一种定义明确的控制序列,用于指导计算机执行各种操作和计算任务,其中可以包含一定的逻辑...

序列化是什么

这种情况下就要用到对象的序列化。 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口 问题六:在JAVA中什么叫序列化和反序列化 30分 序列化是将对象状态转换为可保持或传输的格式的过程。与...

java序列化和反序列化原理 java序列化和反序列化作用 为什么需要序列化和反序列化 Java对象序列化和反序列化 秒懂Java序列化与反序列化 序列化与反序列化 java为什么要序列化 java嵌套json反序列化类 java代码反序列化
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何鉴别珂润护肤品的真假? (共享问题)为什么我的电脑 都设置好了,可其余电脑却看不到我的电脑, 如何在学信网下载毕业证书? 如何在学信网下载教育部学历证书电子注册备案表 体质指数男女各是多少 RewriteRule (.*?)localhost(.*?)\.html $1localhost$2\.aspx 服务器上面装的是phpnow服务器(localhost)安装网站没问题,但是我在客户... 如图,我的php文件明明有,为什么打开localhost后提示no project_百度知 ... 直径32x3.5钢管1米有多重 一根D32x3.5的无缝钢管多重 苹果手机的有线耳机插上没声音怎么办? 中筋面粉、低筋面粉、自发粉、全麦粉有什么区别啊? 抖音里怎么看自己的历史评论 少年与爱永不老去,即便披荆斩棘,丢失怒马鲜衣——莫峻 微软的office2003的最低配置和推荐配置 电脑开机就显示内存不能为read 菜生虫子不想打药用什么好 厨房用什么光的灯好 pes2021配置低怎么 兵马俑由来 sw中sep文件上拔模去除 oppo1105点成英文怎么修改成中文版 海豚家怎么退出账号登录 我想把改成手机号 怎么换绑手机号码 可以换手机号码绑定吗? 有没有这类图案表情包 什么时间种柚子 爱奇艺不是会员就不能开弹幕吗 自己如何重装电脑系统xp 如何折小火龙 蚝油和番茄酱能不能一起放 我国的护士节是哪一天 抖音的视频发到微信怎么发啊? 怎样把手机的耳机收声部位固定在下巴 有关外汇技术分析方面的书哪本最实用啊? volte主叫是另外一个号码打电话吗? 移动王卡国内视频主叫什么意思? 哪里订报纸? 怎么查询一个用了多久? 怎么看自己的注册多久了注册多久如何查看 率土之滨需要人脸识别吗 率土之滨有必要做实名验证吗? 率土之滨实名认证的号能买吗 率土之滨渠道服买了一个号但是身份证改成自己的这个号能被找回吗 淘宝率土之滨首充号要个人信息干嘛 车内放什么保平安辟邪? 艺考升出现问题了 我不能确认参加考试 艺考升考试最后一天还在审核中怎么办 哪位知道输入网址后,按回车网址变成乱码该怎么办?