zoukankan      html  css  js  c++  java
  • java序列化

    1.
    
    package com.zh.serializable;
    import java.io.*;
    import java.util.*;
    public class MySerializable {
    
     /**序列化与反序列化的运用,序列化就是把一个对象写到一个输入流中
      * 反序列化就是反过来
      * @param args
      * @throws IOException 
      * @throws Exception 
      */
     public static void main(String[] args) throws Exception {
      // TODO Auto-generated method stub
      //使用对象输出流
      ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("D:/abc.txt"));
      String obj1="hello";
      Date obj2=new Date();
      Customer obj3=new Customer("tom", 20);
      //序列化对象
      out.writeObject(obj1);
      out.writeObject(obj2);
      out.writeObject(obj3);
      out.close();
      //反序列化
      ObjectInputStream in=new ObjectInputStream(new FileInputStream("D:/abc.txt"));
      String obj11=(String)in.readObject();
      System.out.println("objll:"+obj11);
      System.out.println("objll==obj1:"+(obj11==obj1));
      System.out.println("obj11.equals(obj11):"+obj11.equals(obj11));
      
      Date obj22=(Date)in.readObject();
      System.out.println("obj22:"+obj22);
      System.out.println("obj2==obj22:"+(obj2==obj22));
      System.out.println("obj22.equals(obj2):"+obj2.equals(obj22));
      
      Customer obj33=(Customer)in.readObject();
      System.out.println("obj33:"+obj33);
      System.out.println("obj3==obj33:"+(obj3==obj33));
      System.out.println("obj3.equals(obj33):"+obj3.equals(obj33));
      System.out.println(obj33.getAge());
      
      in.close();
     }
    }
    //要想对象被序列化 就要继承Serializable
    class Customer implements Serializable{
     private String name;
     private int age;
     
     public Customer(String name, int age) {
      this.name = name;
      this.age = age;
      System.out.println("call second constructor");
     }
     
     public boolean equals(Object o){
      if(this == o){
       return true;
      }
      if(! (o instanceof Customer)){
       return false;
      }
      final Customer other=(Customer)o;
      if(this.name.equals(other.name) && this.age==other.age){
       return true;
      }else{
       return false;
      }
     }
     
     
     public String toString(){
      return "name="+name+",age"+age;
     }
    
     public String getName() {
      return name;
     }
    
     public int getAge() {
      return age;
     }
    
     public void setName(String name) {
      this.name = name;
     }
    
     public void setAge(int age) {
      this.age = age;
     }
     
    }
    
    
    
    2.
    
    package com.zh.serializable;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    
    public class MySerializable1 implements Serializable{
    
     /**
      * 用transient修饰可以不被序列化 因为在序列化后,容易被文件读取或拦截网络传输数据而
      * 偷窥
      * @param args
      */
     private String name;
     private transient String password;
     
     public MySerializable1(String name, String password) {
      super();
      this.name = name;
      this.password = password;
     }
     public String toString(){
      return name+" "+password;
     }
     public static void main(String[] args) throws IOException, ClassNotFoundException {
      // TODO Auto-generated method stub
      MySerializable1 user=new MySerializable1("zhouhai", "123456");
      System.out.println("before serialization: "+user);
      ByteArrayOutputStream buf=new ByteArrayOutputStream();
      
      //把user对象序列化到一个字节缓存中
      ObjectOutputStream o=new ObjectOutputStream(buf);
      o.writeObject(user);
      
      ObjectInputStream in=new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray()));
      user=(MySerializable1)in.readObject();
      System.out.println("after serialization: "+user);
     }
    
    }
  • 相关阅读:
    update 大表
    Lazy Writer&CheckPoint
    SQLServer查看登录名和数据库的用户名的映射
    SQL Server Replication出现的错误:The process could not execute 'sp_replcmds' on 'WASYGSHA02-0186'.
    execute as login 切换上下文
    IOS开发-懒加载延迟加载-图片浏览器实例
    IOS开发-代码创建UI控件并修改控件属性(代码创建UIButton、UILabel)
    IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)
    IOS开发-UI控件的常见属性
    IOS开发-UIView(视图)与UIViewController(视图控制器)
  • 原文地址:https://www.cnblogs.com/shaoshao/p/3355320.html
Copyright © 2011-2022 走看看