Java序列化

1. 什么是序列化

序列化是一种将对象以一连串的字符描述的过程,用于解决在对对象流进行读写操作时引发的问题。序列化可以将对象的状态卸载流里进行网络传输,或者保存到文件、数据库等系统中,并在需要时把该流读取出来重新构造一个相同的对象

2.如何实现序列化

所有要实现序列化的类都必须实现Serializable接口,接口中没有包含任何方法。使用一个输出流(如FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,随后使用该对象的writeObject方法就可以将object对象写出(即保存其状态),要恢复时可以使用对应的输入流。

3.序列化的特点

(1)如果一个类能被序列化,那么它的子类也能被序列化

(2)由于static代表类的成员,transient代表对象的临时数据,因此生命这两种类型的数据成员不能被序列化

4.序列化实例


package pck;
import java.io.*;
import  java.util.Date;
public class TestCode implements Serializable{
    private String name;
    private int age;
    public TestCode(){
        this.name="hello";
        this.age=23;
    }
    public int getAge()
    {
        return  age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public static void main(String [] agrs)
    {
        TestCode testCode=new TestCode();
        ObjectOutputStream objectOutputStream=null;
        ObjectInputStream objectInputStream=null;
        try {
            FileOutputStream fileOutputStream=new FileOutputStream("test.out");
            objectOutputStream=new ObjectOutputStream(fileOutputStream);
            objectOutputStream.writeObject(testCode);
            objectInputStream.close();
        }catch (Exception e){

        }
        TestCode testCode1;
        try {
            FileInputStream fileInputStream=new FileInputStream("test.out");
            objectInputStream=new ObjectInputStream(fileInputStream);
            testCode1=(TestCode)objectInputStream.readObject();
            System.out.println("name:"+testCode1.getName());
            System.out.println("age:"+testCode1.getAge());
            objectInputStream.close();
        }
        catch (Exception e)
        {

        }
    }
}

 

结果为:

name:hello
age:23

5.什么情况下需要使用序列化

(1)需要通过网络来发送对象或对象的状态需要被持久化到数据库或文件中

(2)序列化能实现深复制,即可以复制引用的对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值