栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java序列化与反序列化、foreach循环、泛型 达内cbg day14

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java序列化与反序列化、foreach循环、泛型 达内cbg day14

初识序列化与反序列化

序列化:ObjectOutputStream
用于对象的输出writeObject(),保存对象的各项信息
反序列化:ObjectInputStream
用于对象的读取readObject(),把之前序列化输出的数据,在程序中重新恢复成对象

注意:
1.如果一个类的对象想要被序列化,那么这个类必须实现可序列化接口
2.必须先序列化,再反序列化,并且一次序列化对应一次反序列化
3.反序列化时持有的UID必须与序列化目标类Student的UID一样,否则报错
4.反序列化时的文件路径必须与序列化时的文件路径一样

1 概述

序列化是指将对象的状态信息转换为可以存储或传输形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后可以通过从存储区中读取或者反序列化对象的状态,重新创建该对象.

序列化:利用ObjectOutputStream,把对象的信息,按照固定的格式转成一串字节值输出并持久保存到磁盘
反序列化:利用ObjectInputStream,读取磁盘中之前序列化好的数据,重新恢复成对象

2 特点/应用场景
  1. 需要序列化的文件必须实现Serializable接口,用来启用序列化功能
  2. 不需要序列化的数据可以修饰成static,原因:static资源属于类资源,不随着对象被序列化输出
  3. 每一个被序列化的文件都有一个唯一的id,如果没有添加此id,编译器会自动根据类的定义信息计算产生一个
  4. 在反序列化时,如果和序列化的版本号不一致,无法完成反序列化
  5. 常用与服务器之间的数据传输,序列化成文件,反序列化读取数据
  6. 常用使用套接字流在主机之间传递对象
  7. 不需要序列化的数据也可以被修饰成transient(临时的),只在程序运行期间在内存中存在,不会被序列化持久保存
为什么反序列化版本号需要与序列化版本号一致?

我们在反序列化时,JVM会拿着反序列化流中的serialVersionUID与序列化时相应的实体类中的serialVersionUID来比较,如果不一致,就无法正常反序列化,出现序列化版本不一致的异常InvalidClassException。

而且我们在定义需要序列化的实体类时,如果没有手动添加UID,
Java序列化机制会根据编译的class自动生成一个,那么只有同一次编译生成的class才是一样的UID。

如果我们手动添加了UID,只要这个值不修改,就可以不论编译次数,进行序列化和反序列化操作。

foreach循环

高效for循环foreach循环

  • 好处:比普通for循环写法简单,而且效率高
  • 坏处:没有办法按照下标来操作值,只能从头到尾依次执行
  • 语法:for(1 2: 3){循环体}
  • 3-要遍历的数据 1-每轮遍历到的数据的类型 2-变量名,可以随意起名
        for (E a:
             e) {
            System.out.println(a);
        }
泛型

/泛型可以实现通用代码的编写,用E表示元素的类型时Element元素
* 泛型的语法要求:如果在方法上使用泛型,必须两处同时出现
* 一个是传入参数要求为泛型,一个是返回值前的泛型类型,这表示一个泛型方法
/

    private static  void print(E[] e) {
//        for (int i = 0; i < e.length; i++) {
//            System.out.println(e[i]);
//        }
        
        for (E a:
             e) {
            System.out.println(a);
        }
    }

*泛型通常与集合一起使用,用来约束集合中元素的类型

  • 泛型的好处:可以约束集合数据类型,把报错的时机提前,而不是运行时才报错
  • 在向集合中添加元素时,会先检查元素的数据类型,不是要求的类型就会编译失败
List list1 = new ArrayList();
list1.add("泡泡");
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号