java学习笔记 对象序列化

对象序列化就是把一个对象变为二进制数据流的一种方法。如果一个类的对象想被序列化,它要实现Serializable接口,这个接口是个标识接口(只定义了接口,并没有定义方法),表示这个对象具有被序列化的能力。

实现Serializable接口之后,表示这个类具有被数据流传输的能力,如果想进行输入和输出,要使用两个类:ObjectOutputStream 和 ObjectInputStream

序列化时,只有属性被序列化

如果一个对象的某个属性不希望被序列化,可以使用transient关键字声明(把这个属性当成透明,在序列化时不予考虑)。

Serializable接口使用:

import java.io.*;

public class Test {
    public static void main(String[] args)throws Exception {
        try{    
            ObjectOutputStream oos = null;
            ObjectInputStream ois = null;
            File f = new File("e:\\java\\Person.txt");
            OutputStream os = new FileOutputStream(f);
            InputStream is = new FileInputStream(f);
            oos = new ObjectOutputStream(os);
            ois = new ObjectInputStream(is);
            
            Person p1 = new Person(23,"宝宝",180.00);
            oos.writeObject(p1);
            oos.close();
            Person p2 = (Person)ois.readObject();
            ois.close();
          System.out.println(p2);        
        }catch(IOException e) {
            e.printStackTrace();    
        }
    }    
}

class Person implements Serializable {
    int age = 8;
    String name;
    transient double height = 170;//transient声明的变量在序列化时不予考虑,所以在反序列化时就是默认值0
    
    Person(int age,String name,double height) {
        this.age = age;
        this.name = name;
        this.height = height;
    }    
    
    public String toString() {
        return "姓名:" + this.name + "  年龄:" + this.age + "  身高:" + this.height;    
    }
}
r1

r2

posted @ 2016-08-21 17:51  鱼虎纹鲨鱼  阅读(168)  评论(0编辑  收藏  举报