对象序列化

序列化的本质: 将数据转化成二进制字节码文件(对象输出流),由java虚拟机完成,不由程序员完成。

序列化是将一个对象的状态(属性的值)保存起来,然后在适当的时候获得。

序列化分为两部分:序列化—将对象转化成二进制和反序列化—将二进制转化成对象。

序列化是这个过程的第一步,将数据分解成字节流,一般存储在文件中或在网络上传输。

反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,于是还有恢复数据。恢复数据要求有恢复数据的对象实例。

对象序列化要求对象实现序列化接口

public class Student  implements Serializable {
    private static final long serialVersionUID = -1384354585029029786L;
    public String id;
    public String name;
    public String sex;
}

情景:两个平台使用序列化进行数据传输,反序列化是否成功不经取决于反序列化本身还取决于serialVersionUID。

总结:

    其实序列化的作用是能转化成Byte流,然后又能反序列化成原始的类。能在网络进行传输,也可以保存在磁盘中,有了SUID之后,那么如果序列化的类已经保存了在本地中,中途你更改了类后,SUID变了,那么反序列化的时候就不会变成原始的类了,还会抛异常,主要就是用于版本控制

@Test
    public void serialize() throws Exception{
        try {
           // Student  stu=new Student("1001","十一郎","男");
            Serializable  stu1=new Student("1001","十一郎","男");
            OutputStream os=new FileOutputStream("G:\\aaa\\1.txt");
            //对象输出流
            ObjectOutputStream oos=new ObjectOutputStream(os);
            oos.writeObject(stu1);
            oos.flush();
            oos.close();
        } catch (Exception e) {

            // TODO: handle exception
            e.printStackTrace();
        }
    }


    @Test
    public void deserialize(){
        Student  stu=null;
        try {
            InputStream is=new FileInputStream("G:\\aaa\\1.txt");
            ObjectInputStream oos=new ObjectInputStream(is);
            stu=(Student)oos.readObject();
            System.out.println(stu.getName());
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python对象序列是指将Python对象为字节流的过程,以便在不同的系统之间传输或存储。通过序列,我们可以将对象保存到磁盘上或通过网络发送给其他计算机。Python提供了pickle模块来实现对象序列和反序列。引用中的链接提供了一个关于序列存储Python对象的示例。 在Python中,变量是对象的引用,可以用多个变量引用同一个对象。因此,通过pickle模块,我们可以轻松地将对象序列到文件中,并在需要时进行反序列。引用中提到,Python在处理经过pickle的对象时非常方便。 我们可以使用pickle模块的dump()函数将对象保存到文件中,然后使用load()函数来读取文件并重新创建对象。在引用的代码示例中,我们可以看到定义了一个Student类,其中包含了初始方法__init__()、保存方法save()和读取方法read(),分别用于初始对象成员、将对象保存到文件和读取文件的内容。 当我们使用pickle.dump()将Student类的对象s1保存到文件时,可以使用pickle.load()来读取文件并返回一个Student类的对象。在引用的代码示例中,通过调用s1.save()将对象保存到文件,然后通过调用print(s1.read())来读取文件并返回对象。 综上所述,Python对象序列是将Python对象为字节流的过程,可以通过pickle模块的dump()函数将对象保存到文件,再通过load()函数读取文件并返回对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python中的对象序列](https://blog.csdn.net/MixJet/article/details/8458101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python对象序列](https://blog.csdn.net/weixin_55696561/article/details/123633077)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值