java中的序列化

这是一个java序列化的小例子来说明一下  java中的序列化:有什么不懂的在问我,,,

import java.io.*;

public class  SerializableTest{

 public static void main(String[] args)
 {
  try{
   //---实例化一个文件的输出流通道 注意:文件的格式必须为.ser格式的。。。。
   FileOutputStream filestream = new FileOutputStream("C:/hello.ser");
   //---准备输出到这个文件。。。。。
   ObjectOutputStream os = new ObjectOutputStream(filestream);
   

   Son son1 = new Son(9,9,9,9);
   Son son2 = new Son(333,333,333,333);
   Son son3 = new Son(222,222,222,222);
   //--开始输出
   os.writeObject(son1);
   os.writeObject(son2);
   os.writeObject(son3);

   System.out.println("-------------->文件写入完毕/n-------------->开始修改参数:");
   //----------对其类中的各个属性进行修改:
   son1.trans = 888;
   son1.transInt = 888;
   son1.str_0 = "我要修改父类";
   son1.staNum = 888;
   son1.sonNum = 888;
   son1.str_1 = "我要修改子类";
   
   //----关闭流
   os.close();
   filestream.close();
   

  }catch(Exception ex){
   System.out.println(ex);
  }
        //*****************************************-************************************************ 

  //----------------从生成的.ser文件中读取存入的数据-----------------------------------------------------------
  try{
    //--建立连接通道
    FileInputStream inputStream = new FileInputStream("C:/hello.ser");
    //--准备读取数据
    ObjectInputStream is = new ObjectInputStream(inputStream);
    Son sonOne = (Son)is.readObject();
    Son sonTwo = (Son)is.readObject();
    Son sonThree = (Son)is.readObject();

    //---------打印相关的信息---------
    System.out.println("父类的变量 (transient static int trans = 11)---"+sonOne.trans+"       "+sonTwo.trans+"      "+sonThree.trans);
    System.out.println("父类的变量(transient int transInt = 11;)---"+sonOne.transInt+"       "+sonTwo.transInt+"       "+sonThree.transInt);
    System.out.println("父类的字符串(String str_0)--"+sonOne.str_0+"      "+sonTwo.str_0+"      "+sonThree.str_0);
    System.out.println("/n----------------------------------------------------/n");
    System.out.println("子类的变量(static int staNum = 11)---"+sonOne.staNum+"      "+sonTwo.staNum+"      "+sonThree.staNum);
    System.out.println("子类的变量(int sonNum = 11)---"+sonOne.sonNum+"      "+sonTwo.sonNum+"         "+sonThree.sonNum);
    System.out.println("子类的字符串(String str_1)---"+sonOne.str_1+"       "+sonTwo.str_1+"      "+sonThree.str_1);

    System.out.println("/n=======================================================/n");
    System.out.println("通过以上信息:第一:说明也可以序列化父类");
    System.out.println("第二:说明 序列化文件,在保存的时候。各自保存住每个对象的信息,,在第二次保存的时候 ,,在原来的基础之上,,保存,,并不覆盖原来的信息。。。。");
    System.out.println("第三:说明 用static标记声明的属性 ,,不被序列化哦(不受序列化影响。) 哈哈");
    System.out.println("第四:说明 用关键字:transient 标记的,在对象被序列化时,,跳过,,,保存系统对属性的的默认值....不允许被修改,(int 类型的默认是 “ 0 ”)");


  }catch(Exception ex){
   System.out.println(ex);
  }

 

 }
}

//---要序列的对象必须实现Serializable这个接口哦。。。
class Father implements Serializable{
 
 transient static int trans = 11;
 transient int transInt = 11;
 String str_0 = "我是(原来的)【父类】属性";
}
//----我是子类哦---------------
class Son extends Father implements Serializable{
 static int staNum = 11;
 int sonNum = 11;
 String str_1 = "我是(原来的)【子类】属性";

 //-----构造方法修改参数---
 public Son(int i_0,int i_1,int i_2,int i_3){
  //--对父类的变量进行修改
  trans = i_0;
  transInt = i_1;
  str_0 = "我是===修改后的===父类===属性";
  //--修改子类的变量
  staNum = i_2;
  str_1 = "我是==修改后的==子类===属性";
  sonNum = i_3;
  
 
 }
 
}

 

 

下面的是运行结果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值