IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java学习笔记_进阶015 -> 正文阅读

[Java知识库]java学习笔记_进阶015

序列化和反序列化

  • 序列化和反序列化
    • 将内存中的java对象-数据信息传输到硬盘文件,,,这个过程叫做序列化Serialize( 拆分对象)。java对象存储到文件中,将java对象的状态保存下来的过程-----ObjectOutputStream
    • 将硬盘文件中的java对象-数据信息恢复到内存中,,,,,这个过程叫做反序列化DeSerialize(组装对象)。将硬盘上的数据重新恢复到内存当中,恢复成java对象----- ObjectInputStream
  • 序列化的实现
  • 反序列化的实现
  • 参与序列化和反序列化的对象,必须实现Serializable接口
    • 注意:通过源代码发现,Serializable接口只是一个标志接口
      “”"
      public interface Serializable {
      }
      “”"
      这个接口当中什么代码都没有,起到一个标识、标志的作用,java虚拟机看到这个类实现了这个接口,可能会对这个类进行特殊处理。
      Serializable这个标志接口是给java虚拟机参考的,java虚拟机看到这个接口之后,会为该类自动生成一个序列化版本号,这里没有手动写出来,java虚拟机会默认提供这个序列化版本号
  • 序列化多个对象
    • 可以,可以将对象放到集合当中,序列化集合。
    • 提示
      • 参与序列化的ArrayList集合以及集合中的元素都需要实现java.io.Serializable接口
  • transient关键字
    • 为了将某个关键字不序列化,可以采用transient.
    • transient表示游离,不参与序列化。例如private transient String name;//name不参与序列化
  • 序列化版本号的作用
    • 假如原先写了一个类,过了很久,这个类源代码改动了。源代码改动之后,需要重新编译,编译之后生成了全新的字节码文件。并且class文件再次运行的时候,java虚拟机生成的序列化版本号也会发生相应的改变
    • java语言中是采用什么机制来区分的?
      • 第一:首先通过类名进行比对,如果类名不一样,肯定不是同一类
      • 第二:如果类名一样,再怎么进行类的区别?靠序列化版本号进行区分
    • 小明写了a类,小华写了a类。对于java虚拟机来说,java虚拟机是可以区分开这两个类的,因为这两个类都实现了Serializable接口,都有默认的序列化版本号,他们的序列化版本号是不一样,所以区分开了。(这是自动生成序列化版本号的好处
      • 自动生成序列化版本号的缺陷?
        • 这种自动生成的序列化版本号缺点是:一旦代码确定之后,不能进行后续的修改。因为只要修改,必然会重新编译,此时会生成全新的序列化版本号。这个时候java虚拟机会认为这是一个全新的类。(这样就不好了)
    • 最终结论
      • 凡是一个类实现了Serializable接口,建议给该类提供一个固定不变的序列化版本号。这样,以后这个类即使代码修改了,但是版本号不变,java虚拟机会认为是同一个类。
      • eg:
        • private static final long serialVersionUID = 1L; //java虚拟机识别一个类的时候先通过类名,如果类名一致,在通过序列化版本号

IO和Properties联合使用

  • IO和Properties联合使用
    • IO流:文件的读和写
    • Properties:是一个Map集合,key和value都是String类型
    • 以后经常改变的数据,可以单独写到一个文件中,使得程序动态读取,将来只需要修改这个文件的内容,java代码不需要改动,不需要重新编译,服务器也不需要重启,就可以拿到动态的信息。------配置文件
    • 当配置文件中的内容格式为key=value的时候,将这种配置文件叫做属性配置文件
    • java规范中要求:属性配置文件建议以.properties结尾,但这不是必须的。
    • 这种以.properties结尾的文件在java中被称为:属性配置文件。其中Properties对象是专门存放属性配置文件内容的一个类
    • 在属性配置文件中,#号是注释
    • 在属性配置文件中,key和value之间最好不要有空格
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:04:23  更:2021-11-18 11:06:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:23:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码