图文浅析Java序列化和反序列化

 更新时间:2021年05月16日 09:13:43   作者:勤奋的小镇青年、  
序列化(Serialization)是将对象的状态信息转化为可以存储或者传输的形式的过程,下面这篇文章主要给大家介绍了关于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盘的对象:

在这里插入图片描述

总结

到此这篇关于Java序列化和反序列化的文章就介绍到这了,更多相关Java序列化和反序列化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础之匿名内部类、包装类

    Java基础之匿名内部类、包装类

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • springboot使用hibernate validation对参数校验的实现方法

    springboot使用hibernate validation对参数校验的实现方法

    这篇文章主要介绍了spring-boot 使用hibernate validation对参数进行优雅的校验,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Spring启动时实现初始化的几种方案

    Spring启动时实现初始化的几种方案

    这篇文章主要介绍了Spring启动时实现初始化的几种方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java编程redisson实现分布式锁代码示例

    Java编程redisson实现分布式锁代码示例

    这篇文章主要介绍了Java编程redisson实现分布式锁代码示例,小编觉得还是比较不错的,这里给大家分享下,供需要的朋友参考。
    2017-10-10
  • Spring自定义配置Schema可扩展(二)

    Spring自定义配置Schema可扩展(二)

    这篇文章主要介绍了Spring自定义配置Schema可扩展(二)的相关资料,需要的朋友可以参考下
    2016-01-01
  • 服务性能优化之mybatis-plus开启与关闭SQL日志打印方法

    服务性能优化之mybatis-plus开启与关闭SQL日志打印方法

    这篇文章主要介绍了在Mybatis-plus中开启和关闭控制台SQL日志打印,在`application.properties`文件中,可以通过配置来实现SQL日志的开启和关闭,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • SpringCloud修改Feign日志记录级别过程浅析

    SpringCloud修改Feign日志记录级别过程浅析

    OpenFeign源于Netflix的Feign,是http通信的客户端。屏蔽了网络通信的细节,直接面向接口的方式开发,让开发者感知不到网络通信细节。所有远程调用,都像调用本地方法一样完成
    2023-02-02
  • SpringBoot实现Thymeleaf验证码生成

    SpringBoot实现Thymeleaf验证码生成

    本文使用SpringBoot实现Thymeleaf验证码生成,使用后台返回验证码图片,验证码存到session中后端实现校验,前端只展示验证码图片。感兴趣的可以了解下
    2021-05-05
  • Java通过exchange协议发送邮件

    Java通过exchange协议发送邮件

    这篇文章主要为大家详细介绍了Java通过exchange协议发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Java中特殊运算符及其应用详解

    Java中特殊运算符及其应用详解

    当涉及位操作和位级运算时,Java 提供了一组特殊的运算符,即左移(<<)和右移(>>)运算符,下面小编就带大家深入了解一下它们的具体应用吧
    2023-08-08

最新评论