黑马程序员之Java--对象序列化

Java对象序列化详解
------- android培训java培训、期待与您交流! ----------

序列化分为两大部分:序列化和反序列化

把Java对象转换成字节序列的过程称为对象的序列化

把字节序列恢复为Java的对象的过程称为对象的反序列化

 

对象序列化只要有两个用途:

1)把对象的字节序列永久的保存到硬盘上,通常是一个文件

2)在网络中传输字节序列

 

Java中有2个序列化对象的类:ObjectOutputStream负责是将对象序列化为字节序列,主要是通过writeObject()方法

                                                      ObjectInputStream负责是将字节序列转换为Java对象,主要是通过readObject()方法

 

ObjectOutputStream只能对Serializable接口的类的对象进行序列化,否则编译不通过

下面可以看一个对应的例子,在实现Serializable接口时,最好手动设置serialVersionUID值

public class Student implements Serializable{
    //序列化类必须声明一个明确的 serialVersionUID 值
    private static final long serialVersionUID = 1432L;

    private String name;
     private int age;
      
     public  String toString(){
               return "Student[name="+name+",age = "+age+"]";
     }
}


接着对这个对象持久化,也就是序列化

private static void saveObject() throws FileNotFoundException, IOException {
                    Student stu = new Student();
        stu.setName("asdf");
        stu.setShuxue(123);
        stu.setYingyu(111);
        stu.setYuwen(123);
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
            oos.writeObject(stu);
        } finally {
            if (oos != null)
                oos.close();
        }
}


也可以反序列化

private static void getObject() throws FileNotFoundException, IOException,
            ClassNotFoundException {
        ObjectInputStream ois = null;
        Student obj;
        try {
            ois = new ObjectInputStream(new FileInputStream("obj.object"));
            obj = (Student) ois.readObject();
        } finally {
            if (ois != null)
                ois.close();
        }
        System.out.println(obj.getYuwen()+obj.getName());
}


这样就对整个对象进行持久化操作

 

如果对象中的某个属性只想在内存,不想被持久化,该咋办呢?

可以在该属性直接加上transient修饰或是静态修饰,如private transient  String name,那么name就不会被持久化了

------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值