图文浅析Java序列化和反序列化
作者:勤奋的小镇青年、 发布时间:2022-08-03 17:46:59
标签:java,序列化,反序列化
序列化
序列化:将对象转换为二进制序列在网络中传输或保存到磁盘
反序列化:从网络或磁盘中将二进制序列转换为对象
注意:
对象必须实现Serializable接口
对象的所有属性都要能序列化(Integer,Byte等都进行了序列化)
String
Integer
案例:
1.编写大象类
public class Elephant implements Serializable {
private String name;
private String age;
private String sex;
public Elephant(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Elephant{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", sex='" + sex + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
2.大象测试类
public class ElephantTest {
public static final String PATH = "D:\\elephant";
static void write(Elephant elephant){
//创建对象输出流
try( ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(PATH))) {
//写入对象
out.writeObject(elephant);
} catch (IOException e) {
e.printStackTrace();
}
}
static Object read(){
//创建对象输出流
try( ObjectInputStream in = new ObjectInputStream(new FileInputStream(PATH))) {
//写入对象
return in.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Elephant elephant7 = new Elephant("小红象", "18", "男");
write(elephant7);
Elephant elephant1 = (Elephant) read();
System.out.println(elephant1);
System.out.println(elephant7);
System.out.println(elephant1==elephant7);
}
}
运行结果:
写入D盘的对象:
总结
来源:https://blog.csdn.net/weixin_53106424/article/details/116765062
0
投稿
猜你喜欢
- 今天被数据大神说了,对接第三方接口返回的json字段我想用驼峰形式,他说我这样不专业。所以就改了,认怂。记住以后再次对接rest接口,返回的
- 首先给出一段代码:public class AslistMethod { public static void main(String[]
- 本文介绍Android中的5种数据存储方式。数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是
- Java RandomAccessFile 指定位置实现文件读取与写入RandomAccessFile是属于随机读取类,是可以对文件本身的内
- @Autowired注解在抽象类中失效最近在工作中遇到这个问题,在抽象类中使用Autowired这个注解,注入mybatis的dao时,总是
- 最近要给一个 Winform 项目添加功能,需要一个能显示进度条的弹窗,还要求能够中止任务,所以就做了一个,在此做个记录总结。虽然用的是比较
- C#接口的学习,在编程中,我们经常会用到接口,那什么是接口呢?接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接
- 这一篇博客我们来使用UGUI实现图片的拖拽功能。说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一
- 本文实例讲述了Java数组传递及可变参数操作。分享给大家供大家参考,具体如下:方法可以操作传递和返回基本数据类型,但是方法中也可用来传递和返
- 前言日常开发中,特别是音视频开发,需要在界面上渲染视频,比如制作一个播放器、或者视频编辑工具、以及视频会议客户端。通常拿到的是像素格式数据,
- 数据库事务是被当作单个工作单元的操作序列。这些操作要么全部完成或全部不成功。事务管理是面向企业应用程序,以确保数据的完整性和一致性RDBMS
- PathVariable 映射 URL 绑定的占位符带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向
- 1.插入排序这个打麻将或者打扑克的很好理解, 比如有左手有一副牌1,2,4,7 ,来一张3的牌, 是不是就是手拿着这张牌从右往左插到2,4之
- springboot Interceptor * excludePathPatterns忽略失效excludePathPatterns方法是
- 建造者模式针对的是复杂对象的构建,比如一个产品有多个部分构成,每个部分都可以单独进行生产,这时候就可以用建造者模式,由Builder构造产品
- 事件函数的执行顺序先说一下执行顺序吧。 官方给出的脚本中事件函数的执行顺序如下图: 我们可以做一个小实验来测试一下: 在Hierarchy
- JDK * 实现原理 * 机制通过实现 InvocationHandler 接口创建自己的调用处理器通过为 Proxy 类指定 Clas
- 一个线程如何知道另一线程已经结束?Thread类提供了回答此问题的方法。有两种方法可以判定一个线程是否结束。第一,可以在线程中调用isAli
- 对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我
- 1、static关键字1.1 使用static关键字定义属性在讲解static定义属性操作之前,首先编写如下一道程序。现在定义一个表示中国人