Java序列化与反序列化

Java序列化与反序列化
1、什么是序列化反序列化

java程序代码序列化是分割程序对象,有字节序列。反序列化就是字节程序重新组装成java对象的过程。

2、为什么需要序列化与反序列化

我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这就需要Java序列化与反序列化了。换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中恢复出Java对象。

package xuliehua;
/**
 * 测试StudentTest01类
 */
import java.io.Serializable;
//方法需要实现Serializable这个接口
//生产默认序列号
public class StudentTest01 implements Serializable {
    //一般为使后期改代码方便会自定义序列号
    private static final long serialVersionUID = 15703896520L;
    private int age ;
    // private Transient String name ;   游离的
   // private String name ;

    public StudentTest01() {
    }

    public StudentTest01(int age) {
        this.age = age;
       // this.name = name;
    }

    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;
//    }

//    @Override
//    public String toString() {
//        return "StudentTest01{" +
//                "age=" + age +
//                ", name='" + name + '\'' +
//                '}';
 //   }

    @Override
    public String toString() {
        return "StudentTest01{" +
                "age=" + age +
                '}';
    }
}

package xuliehua;
/**
 * StudentTest类 序列化过程
 */

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class StudentTest02{
    public static void main(String[] args) throws Exception {
        StudentTest01 s = new StudentTest01(21);
        ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("new2"));
        //对象序列化保存在new2中
        o.writeObject(s);
        o.close();
        o.flush();

    }
}

package xuliehua;
/**
 * StudentTest反序列化过程
 */

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class StudentTest03 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream o2 = new ObjectInputStream(new FileInputStream("new2"));
        //反序列化 实现对象程序
       Object s1 = o2.readObject();
        System.out.println(s1);
        o2.close();

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值