首页 > 编程语言 >JAVA基础:对象流

JAVA基础:对象流

时间:2024-09-02 18:52:51浏览次数:10  
标签:JAVA 字节 对象 基础 private new 序列化 读取

目录

前言

序列化和反序列化

对象流的创建


前言

之前的流我们都是使用他们读取一些字节或者字符的数据,但是在实际的应用中数据的类型除了基本数据类型之外,还有引用数据类型,对象流就是能读取引用数据类型的流

序列化和反序列化

对象流的本质是一个字节流,也是过程流

对象流的读取涉及两个概念:序列化和反序列化

假设我们没有对象流其实也可以把对象数据存到文件中,我们可以先获得所有对象属性的值,然后按照规则把这些数据拼成字符串,例如每个数据利用逗号隔开,写入文件。读数据时可以按照逗号拆分再重写拼成对象

我们将把对象拆开写入文件的过程称为序列化

将把对象读入内存重新组成对象的过程称为反序列化

以上的过程很麻烦,这也是广义上的序列化

在java中狭义的序列化就是使用对象流读取对象数据,这个过程更加简单方便

对象流的创建

FileOutputStream fos = new FileOutputStream("c:/z/2.txt") ;
ObjectOutputStream oos = new ObjectOutputStream(fos) ;
oos.writeObject(car); 
oos.flush();


FileInputStream fis = new FileInputStream("c:/z/2.txt") ;
ObjectInputStream ois = new ObjectInputStream(fis) ;
Car c = (Car) ois.readObject();
System.out.println(c);

手动实现序列化的过程非常麻烦,但是使用对象流只要上面的几个步骤就好了

因为对象流是个过程流和字节流,所以需要配和文件字节流这个节点流

但是只有上面的代码是无法序列化的,还需要一个重要的步骤,我们需要告诉jvm这个类的对象是可以序列化的

public class Car implements Serializable {
    private int cno ;
    private String cname ;
    private String color ;
    private int price ;
}

要让需要序列化的对象实现Serializable 接口

这个接口什么代码都没有,作用就是起到一个标识作用,告诉jvm这个对象可以序列化

标签:JAVA,字节,对象,基础,private,new,序列化,读取
From: https://blog.csdn.net/weixin_65346668/article/details/141826689

相关文章

  • Java小白一文讲清Java中集合相关的知识点(二)
    ListList接口和常用方法基本介绍List接口是Collection接口的子接口List集合类中的元素有序–即添加顺序和取出顺序一致、且可重复publicclassJourney{@SuppressWarnings({"all"})publicstaticvoidmain(String[]args){Listlist=newArray......
  • 【Java 基础】类和对象(构造&this&封装&static&代码块)
    ✨                           风起于青萍之末,浪成于微澜之间    ......
  • Java开发语言:ssm人力资源管理系统010(附免费源码)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设人......
  • 【Java】—— Java面向对象进阶:Java中的账户管理-基础账户与可透支账户的实现与测试
    目录1.基础账户类(Account)2.测试基础账户类3.可透支账户类(CheckAccount)4.测试可透支账户类运行结果1.基础账户类(Account)        写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;......
  • 高级java每日一道面试题-2024年9月02日-基础篇-什么是脏读、不可重复读和幻读?
    如果有遗漏,评论区告诉我进行补充面试官:什么是脏读、不可重复读和幻读?我回答:在数据库事务的并发控制中,脏读(DirtyRead)、不可重复读(Non-repeatableRead)和幻读(PhantomRead)是三种常见的并发问题,它们主要涉及到事务的隔离级别和一致性。了解这些问题有助于我们设计更健......
  • 高级java每日一道面试题-2024年9月02日-基础篇-如何处理嵌套事务?
    如果有遗漏,评论区告诉我进行补充面试官:如何处理嵌套事务?我回答:处理嵌套事务(NestedTransactions)是Java开发中一个常见的问题,特别是在涉及多个数据库操作时。嵌套事务指的是在一个事务中又开始了另一个事务,形成了事务的层次结构。处理嵌套事务需要特别注意事务的边界......
  • 【编程基础】黑色星期五(friday)
    题目描述13号又是星期五是一个不寻常的日子吗?13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到1900+n-1年12月31日.n是一个非负数且不大于400.这里有一些你要知道的:1900年1月1......
  • JAVA List<Map<String, Object>> sort 多个排序写法
     基本方法/***排序=**@paramlist*@paramsort_key*@return*/publicstaticList<Map<String,Object>>sort(List<Map<String,Object>>list,Stringsort_key,Booleanasc,Stringsort_key2,Boole......
  • Java平衡树--查找树的新建与树的实现
    Java学习+面试指南:https://javaxiaobear.cn1、查找树的定义一棵2-3查找树要么为空,要么满足满足下面两个要求:2-结点含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点含有两个键(及其对应的值)和三条链,左链接指向的2......
  • Java 最小优先队列API设计与实现
    Java学习+面试指南:https://javaxiaobear.cn最小的元素放在数组的索引1处。每个结点的数据总是小于等于它的两个子结点的数据。1、API设计类名MinPriorityQueue构造方法MinPriorityQueue(intcapacity):创建容量为capacity的MinPriorityQueue对象成员方法privatebooleanless(inti......