java对象的序列化和反序列化

简介:   /* java中对象的序列化和反序列化    序列化将对象信息保存至文件等永久设备   反序列化从设备读取对象信息 在内从中根据信息重=构对象但是并不调用构造函数 序列化只保存对象的非静态成员  静态成员和方法不保存 transient 修饰的成员可以被忽略 不背保存   ...
 

/*
java中对象的序列化和反序列化    序列化将对象信息保存至文件等永久设备   反序列化从设备读取对象信息
在内从中根据信息重=构对象但是并不调用构造函数 序列化只保存对象的非静态成员  静态成员和方法不保存
transient 修饰的成员可以被忽略 不背保存  
在进行序列化和反序列化的时候必须实现   Serializable 接口   
在进行串行化的时候 会自动调用  对象的
 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;
 这两个方法可以在对象中进行重写来灵活运用  是唯一可以再外部调用的私有方法


*/
import java.io.* ;
class  Test
{
 public static void main(String []args)  throws Exception
 { 
   Student s1=new Student(1,"w22");
   Student s2=new Student(2,"w3322");
   Student s3=new Student(4,"w24432");
   FileOutputStream fos=new FileOutputStream("ob.txt");
   ObjectOutputStream oos=new ObjectOutputStream(fos);
   oos.writeObject(s1) ;   //将对象写入文件输出流
   oos.writeObject(s2) ;
   oos.writeObject(s3) ;
   oos.close() ;//关闭
  
  
  
   FileInputStream fis=new FileInputStream("ob.txt");  //打开文件输入流
   ObjectInputStream bis=new ObjectInputStream(fis);  //连接输入流 
   Student tem=null;
   for(int n=0;n<3;n++)
   { 
      tem=(Student)bis.readObject()  ;
      System.out.println(tem.num+"  "+tem.name) ;  //输出从文件加载的对象的信息
   }
   bis.close();//关闭对象输入流
  
  
 }
 
}
class Student  implements   Serializable   //实现 Serializable  接口实现串行化 
{  
   int num ;
   String name ;
    Student(int num,String name)
    {
      this.num=num;
      this.name=name;
    }
     private void writeObject(java.io.ObjectOutputStream oos)   throws IOException  //序列化 会调用的函数 我们可以重写这个函数好似唯一可以被外部调用的静态函数
     {
       oos.writeInt(num) ;
       oos.writeUTF(name);
       System.out.println("Object of Class  Student is serializing!") ;//提示信息
        
      }
 
    private void readObject(java.io.ObjectInputStream ois)   throws IOException, ClassNotFoundException
    {
      this.num=ois.readInt() ;
      this.name=ois.readUTF() ;
      System.out.println("Object of Class  Student is deserializing !") ;  //输出提示信息
     
    }
 
 
}

目录
相关文章
|
1月前
|
存储 C#
C#中的序列化和反序列化
C#中的序列化和反序列化
12 0
|
1月前
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
|
25天前
|
Java
java8中List对象转另一个List对象
java8中List对象转另一个List对象
36 0
|
1天前
|
Java
Java基础之对象的引用
Java基础之对象的引用
5 0
|
5天前
|
Java
Java中如何克隆一个对象?
【4月更文挑战第13天】
14 0
|
7天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
10天前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
17 5
|
11天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
46 0
对象的交响曲:深入理解Java面向对象的绝妙之处
|
16天前
|
Java
在Java中,多态性允许不同类的对象对同一消息做出响应
【4月更文挑战第7天】在Java中,多态性允许不同类的对象对同一消息做出响应
17 2
|
25天前
|
Java
Java常用封装Base对象
Java常用封装Base对象
8 0

热门文章

最新文章