ObjectOutputStream序列化和ObjectInputStream反序列化

本文介绍了Java中对象的序列化与反序列化的实现方法,包括如何使用`java.io.ObjectOutputStream`将对象写入文件,以及如何通过`java.io.ObjectInputStream`从文件中读取对象并恢复其状态。
/*
java对象本来是存储在堆中的,若是采取保护措施,则保存到硬盘中,这个过程叫序列化
相应的有反序列化

java也有编译和反编译,不过反编译产生的java源文件和本来的java源文件存在一定区别

java.io.ObjectOutputStream;序列化java对象到硬盘(Serial)
java.io.ObjectInputStream;将硬盘中的数据反序列化到jvm内存(DeSerial)


Compile 编译 (java-->class)
DeCompile 反编译 (class-->java)
*/
import java.io.*;
//可序列化的,该接口没有任何方法,是一个标志接口,像这样的接口还有java.lang.Cloneable,可克隆的
import java.io.Serializable;


/*
标志接口的作用:起到标识的作用
JVM如果看到该对象实现了某个标识接口,会对他特殊待遇
会给该类添加一个属性:static final long serialVersionUID
一段时间后,可能需要对类进行修改,但是系统自动赋值版本号,就不能反序列化了

所以我们可以自己写一个序列化版本号,不让系统自动生成

*/
public class user implements Serializable{

//如果不想让该对象参与序列化,需要使用transient关键字
transient String name;
String name;
user(String name){
this.name=name;
}

public String toString(){
System.out.println(name);
}
}


public class fuck12{
public static void main(String[] args){
//1.创建对象
user u1=new user("jack");

//2.创建输出流(序列化流)(java对象状态保存到硬盘中)
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("520"));

//3写
oos.writeObject(u1);

//刷新和关闭
oos.flush();
oos.close();

//反序列化
//创建反序列化列表
ObjectInputStream ois=new ObjectOutputStream(new FileInputStream("520"));

//反序列化
Object o=ois.readObject();

System.out.println(o);

//关闭
ois.close();

}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值