java I/O———序列化

本文详细介绍了Java中序列化的基本概念,包括对象序列化的过程、序列化与反序列化的实现方式,以及如何使用transient关键字控制序列化的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有的项目开发一定都有序列化的概念存在。

1.序列化的基本概念

对象序列化指的是:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。但是并不意味着所有类的对象都可以被序列化,严格来讲,需要被序列化的类对象往往需要传输使用,同时这个类必须实现
java.io.Serializable接口。但是这个接口并没有任何的方法定义,只是一个标识而已。

范例:定义可以被序列化对象的类

在这里插入图片描述

序列化对象时所需要保存的就是对象中的属性,所以默认情况下对象的属性将被转为二进制数据流存在。

2.序列化与反序列化

如果要想实现序列化与反序列化的对象操作,在java.io包中提供有两个处理类:ObjectOutputStream、ObjectInputStream

首先来观察这两个类的定义结构及其各自的构造方法
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

范例:实现对象序列化

在这里插入图片描述

在这里插入图片描述

范例:实现对象反序列化

在这里插入图片描述

在以后实际项目的开发过程之中,你们根本就不需要知道如何实现序列化和反序列操作,因为都会由各自的容器帮助你自动处理。

只会在SpringData操作Redis里面才会出现自己实现序列化的操作。

3.transient关键字

实际上序列化的处理在java.io包里面有两类,Serializable是使用最多的序列化接口,这种操作采用自动化模式完成,也就是说默认情况下所有的属性都会被序列化下来。
还有一个Externalizable接口是需要用户自己动手来处理序列化,一般很少使用。
但是由于Serializable默认会将对象中所有属性进行序列化保存,如果现在某些属性不希望被保存了,那么就可以使用transient关键字。

范例:使用transient

在这里插入图片描述

大部分情况下使用序列化往往是在简单java类上,其他类上使用序列化的操作模式相对较少。而如果是简单java类,很少去使用transient关键字了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值