Java序列化 Serializable 的作用

文章详细解释了Java中序列化和反序列化的概念,即把Java对象转换为字节序列以便存储或在网络中传输。通过示例展示了如何实现对象的序列化(写入文件)和反序列化(从文件读取恢复对象)。序列化有助于对象的持久化和跨平台传输。
摘要由CSDN通过智能技术生成

 很多时候我们都会看到实体类上会实现一个类  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

 

结果如下

 

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值