00022.14 对象的序列化和反序列化的概述:ObjectOutputStream和ObjectInputStream

对象的序列化和反序列化目录

ObjectOutputStream和ObjectInputStream

前言

序列:就是排队的意思,
对象序列化即把对象转为字节序列,序列化的过程
对象的序列化和反序列化:ObjectOutputStream和ObjectInputStream
ObjectOutputStream:用于输出对象,把对象转成字节数据输出

一、对象的序列化和反序列化是什么?

对象的序列化和反序列化

ObjectOutputStream:用于输出对象,把对象转成字节数据输出,对象的输出过程称为序列化。
ObjectOutputStream比OutputStream多了很多方法,其中一个是 writeObject(obj)
如果这段代码是一个对象
在这里插入图片描述

再举个更直观的例子 创建一个user类
在这里插入图片描述
我们现在不是想写一段一段文字,
而是直接把对象写进去
怎么写
在这里插入图片描述

ObjectOutputStream:用于输出对象,把对象转成字节数据输出,对象的输出过程称为序列化。
ObjectOutputStream比OutputStream多了很多方法,其中一个是 writeObject(obj)
在这里插入图片描述
在这里插入图片描述
报这个错误怎么解决?

为什么会报错?

如果没有实现Serializable接口的类型(即上图的u对象)
在序列化时,报错误NotSerializableException,不能序列化
要解决,User类必须要实现java.io.Serializable接口
在这里插入图片描述
在这里插入图片描述

【理解】就像护照,你有护照就是合法出入境,没有护照就是偷渡
实现这个接口就行了
完成以后我们看一下效果,似乎是乱糟糟的,只能看到一点影子
在这里插入图片描述
即返回的是整个对象的所有信息
在这里插入图片描述
只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初始对象中引用的其他所有对象的闭包。
writeObject 方法用于将对象写入流中。所有对象(包括 String 和数组)都可以通过 writeObject 写入。可将多个对象或基元写入流中。必须使用与写入对象时相同的类型和顺序从相应 ObjectInputstream 中读回对象。

读取:反序列

现在我们读取一下,要注意的是这个对象也只能java程序去读,别的程序是不能读取的
读取的过程就叫反序列化
ObjectInputstream:用于输入对象,把字节序列转为对象读取,对象的读取过程称为反序列化。
ObjectInputstream比InputStream多了很多方法,其中一个是 Object readObject()
在这里插入图片描述

总结

1、 ObjectOutputStream:用于输出对象,把对象转成字节数据输出,对象的输出过程称为序列化。
ObjectOutputStream比OutputStream多了很多方法,其中一个是 writeObject(obj)
2、 ObjectInputstream:用于输入对象,把字节序列转为对象读取,对象的读取过程称为反序列化。
ObjectInputstream比InputStream多了很多方法,其中一个是 Object readObject()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值