Java序列化 Serializable 的作用

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化 状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。 阅读详情

 很多时候我们都会看到实体类上会实现一个类  implements Serializable


import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
public class User implements Serializable {
    public static final long serialVersionUID=1L;

    private String name="xgl";
    private String password="admin";
    private String sex="男";
    private String age="18";

    public User(String name, String password, String sex, String age){
        this.name=name;
        this.password=password;
        this.age=age;
        this.sex=sex;
    }

}

其实 序列化 先从字面上理解

序:次序,顺序,程序,秩序

列:排成的行

序列化就是把xxx 按照统一的秩序来排列好处理

在java里的序列化是什么意思呢:(出自华为开发者联盟)

序列化的原本意图是希望对一个Java对象作一下“变换”,变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外变换成字节序列也更便于网络运输和传播,所以概念上很好理解:

  • 序列化:把Java对象转换为字节序列。
  • 反序列化:把字节序列恢复为原先的Java对象。

而且序列化机制从某种意义上来说也弥补了平台化的一些差异,毕竟转换后的字节流可以在其他平台上进行反序列化来恢复对象。



作者:华为云开发者联盟
链接:https://www.zhihu.com/question/26475281/answer/1898221893
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

实例如下:

第一步序列化: 


    public static void main(String[] args) throws IOException {
        User user = new User();
        System.out.println("Person Serial" + user);
        FileOutputStream fos = new FileOutputStream("User.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(user);
        oos.flush();
        oos.close();
    }

我们在根目录下打开生成的txt文本

结果如下

这就是将User对象通过序列化的方式处理的过程展示 

 

第二步反序列化:

     public static void main(String[] args) throws IOException, ClassNotFoundException {
           /** User user = new User();
            System.out.println("Person Serial" + user);
            FileOutputStream fos = new FileOutputStream("User.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(user);
            oos.flush();
            oos.close();**/

            FileInputStream fis = new FileInputStream("User.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            User  user = (User) ois.readObject();
            ois.close();
            System.out.println("Person Deserial" + user);
        }

运行结果debug

 

结果如下

 

这就是序列化和反序列的过程,码字不易,点个赞呗!

 

相关推荐

用LTspice仿真Buck电路输出电容:从参数计算到波形优化的全流程演示

本文详细介绍了使用LTspice仿真Buck电路输出电容的全流程,从理论计算到波形优化。通过解析关键参数如纹波电压、瞬态响应和ESR,结合工程计算方法和LTspice仿真技巧,帮助工程师优化Buck电路设计,解决输出纹波过大和瞬态响应不佳的问题。

night的博客 851

Java中序列化接口Serializable的serialVersionUID的作用

本文介绍Java中序列化接口Serializable的serialVersionUID的作用。

IT利刃出鞘的博客 3566

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境

本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。

fire9的博客 645

Java序列化接口Serializable接口的作用总结

一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。(因为静态static的东西在方法区.) 序列化能把堆内存中的对象的生命周期延长,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了.(存储到硬盘是一个文件,...

qq_34998093的博客 231

Spring AI Alibaba实战训练营-16 NL2SQL (自然语言转 SQL)应用开发指南

本文介绍了一个基于AI的智能BI应用开发项目,主要实现自然语言转SQL(NL2SQL)功能,包含对话模块、MCP模块、向量数据管理模块。项目采用Spring AI Alibaba框架,集成通义千问大模型,支持内存向量库和AnalyticDB向量数据库两种存储方案。重点展示了chat模块的三个控制器实现:AnalyticNl2SqlController用于生产环境,SimpleChatController适用于开发测试,Nl2sqlForGraphController支持基于图的复杂对话流程。系统通过将业务知

program哲学 1587

基于STM32的录音机设计(STM32F103+VS1053B)

本项目设计并实现了一款基于STM32微控制器的便携式录音机。该录音机采用STM32F103C8T6作为主控芯片,结合VS1053B音频编解码模块、SD卡存储、OLED显示屏以及按键模块,提供了手动录音、自动录音和录音回放等多种功能。

1万+

JAVA面试题-什么是java序列化,如何实现java序列化,Serializable接口的作用

什么是java序列化 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。 如何实现java序列化 需要被序列化的类必须实现Serializable接口。一个接口里面什么内容都没有,我们可以将它理解成一个标识接口。在Java中的这个Serializable接口其实是给jvm看的,通知jvm,我不对这...

huangpf_vcx 3240

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 152

Java 序列化:implements Serializable作用

原文

```求知若渴,虚怀若谷``` 1008

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1658

企业级托管钱包架构设计与MPC密钥管理:基于Go语言的生产级实践

本文探讨了2026年Web3生态中企业级托管钱包的技术架构与实现方案。文章指出,传统私钥管理模式已无法满足机构级资产管理需求,而基于多方安全计算(MPC)和门限签名(TSS)的技术方案成为主流选择。研究分析了托管钱包的四层架构设计,详细解读了MPC的核心技术原理,包括分布式密钥生成(DKG)和签名协议演进。通过Go语言实现案例,展示了密钥分片管理、DKG流程和交易签名等核心模块的代码实现。文章还提出了生产部署的安全原则、容灾设计和监控体系,并讨论了密钥撤销等现存挑战及TEE融合等未来趋势。研究为构建安全、高

分享AI、区块链技术及应用,未来已来 81

java序列化接口_Java序列化接口Serializable接口的作用总结

1 importjava.io.Serializable;2 /*3 * Serializable:用于给被序列化的类加入ID号。4 * 用于判断类和对象是否是同一个版本。5 */6 public class Person implements Serializable/*标记接口*/{7 /**8 * transient:非静态数据不想被序列化可以使用这个关键字修饰。9 */...

weixin_29353947的博客 87

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java序列化接口Serializable的作用详细说明

1、Java序列化接口Serializable的作用: 序列化能把堆内存中的对象的生命周期延长,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了.(存储到硬盘是一个文件,不需要我们去解析,如果用记事本打开解析会出现乱码,解析要用特定的方式,不用我们管. 我们只需要读取).  把对象存储到硬盘上的一个文件中,这个文件的标准扩展名是(.object). 什么样的...

HopperZheng的博客 1197

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 之 Serializable 序列化和反序列化的概念,作用的通俗的解释

1、序列化和反序列化的疑问 遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 a,什么叫序列化和反序列化 b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化 c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。 我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。 在处理这个问题之前,你要先知道一个问题,这个比较重要。 这个Serializable接口,

wounler的博客 312

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

serializable 序列化id_Java 之 Serializable 序列化和反序列化的概念,作用的通俗的解释...

遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前...

weixin_39903872的博客 375

什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用

  本文转自:https://blog.youkuaiyun.com/m0_37450089/article/details/78542825       序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化(将对象转换成二进制)。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间,序列化是为了解决在对对象流进行读写操作时所引发的问题。把对象转换为字节序列的过程称为对象的...

代码君的博客 7462

什么是 java 序列化?如何实现 java 序列化? Serializable 接口的作用?

什么是 java 序列化?如何实现 java 序列化?或者请解释 Serializable 接口的作用?我们有时候将一个 java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个 java 对象,例如,要将 java 对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个 java 对象变成某个格式的字节流再传输。 但是,jre 本身就提供了这种支持,我们可以调用 OutputStream的 writeObject 方法来做,如果要让 java 帮我们做,要被传输的对象必须实

qf2019的博客 115

什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传输,但是,jre本身就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java 帮我们做,要被传输的对象必须实现serializa

java相关技术(partner4java专栏)希望对您的学习有所帮助 3474

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

a_sid的博客 189

什么是JAVA序列化,如何实现JAVA序列化?或者请解释Serializable接口的作用

什么是JAVA序列化,如何实现JAVA序列化?或者请解释Serializable接口的作用 我们有时候将一个JAvA对象变成字节流的形式传出去或者从一个字节流中恢复成一个Java对象,例如,要将Java对象存储到硬盘或者传送给网络上的其他计算机这个过程我们可以自己写代码去把一个Java对象变成某个格式的字节流再传输,但是,JRE本身就提供了这种支持,我们可以调用 OUTputStream 的WriteObject 方法来做,如果要让Java帮我们做,要被传输的对象必须实现Serializable接口,这样,

weixin_45712075的博客 281

Java中为什么实现了Serializable接口就具备了被序列化的能力以及serialVersionUID的作用

原文地址:http://czh.javaeye.com/blog/657761serialVersionUID作用:  序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。  有两种生成方式:  一个是默认的1L,比如:private static final long se...   serialVersionUID作用:   序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。   有两种生成方式:   一个是默认的1L,比如:private static fin

G_beginner的专栏 2675
上一篇: easypoi中文文件名导出报错已解决
下一篇: MYSQL 使用 union all合并两张表
小亮学java
博客等级 码龄7年 175粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值