序列化和反序列化
T1、序列化定义: Java序列化就是指把Java对象转换为字节序列的过程
T2、序列化最重要的作用:
在传递和保存对象时,保证对象的完整性和可传递性。
对象转换为有序字节流, 以便在网络上传输或者保存在本地文件中。
T3反序列化定义:Java反序列化就是指把字节序列恢复为Java对象的过程。
T4、反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
1.student类
package day02;
import java.io.Serializable;
/**
* @author MXL
*序列化操作
*/
public class Student implements Serializable{
/**
* 实现了这个Serializable接口,标志着当前类可以被序列化
*
* 序列化版本号
* 作用是什么?
* 在反序列化的时候,根据序列化的版本号,生成原来的实际的对象
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private transient String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
//为什么生成toString()
//没有重写tostring ,每执行System.out.println() 会默认调用Object 的toString 方法
//重写tostring,每执行System.out.println() 会调用重写的toString 方法,情况则会根据重写的方法打印输出成自己想得到的格式。
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", address=" + address + "]";
}
}
2.序列化
package day02;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
/*
* 定义:
* Java序列化就是指把Java对象转换为字节序列的过程
*
* 序列化最重要的作用:
* 在传递和保存对象时,保证对象的完整性和可传递性。
* 对象转换为有序字节流, 以便在网络上传输或者保存在本地文件中。
*/
//序列化
public class ObjOutputStreamTest {
public static void main(String[] args) {
try {
FileOutputStream out =new FileOutputStream("demo/obj.txt");
//对象输出流 将对象序列化
ObjectOutputStream obs =new ObjectOutputStream(out);
Student s = new Student();
s.setId(1);
s.setName("zichuan");
s.setAddress("jiangsu");
/*
* riteObject(Object obj)方法将将传入的obj对象进行序列化,
* 把得到的字节序列写入到目标输出流中进行输出。
*/
obs.writeObject(s);
obs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.反序列化
package day02;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
/*
* 定义:
* Java反序列化就是指把字节序列恢复为Java对象的过程。
*
* 反序列化的最重要的作用:
* 根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
*/
public class ObjInputStreamTest {
public static void main(String[] args) {
try {
//文件输入流
FileInputStream in= new FileInputStream("demo/obj.txt");
//反序列化对象
ObjectInputStream is =new ObjectInputStream(in);
/*
* JAVA中有个顶级父类,叫做object java自身提供的类都基本继承了这个父类
而我们自己写的类也是间接继承了object
*/
Student s =(Student)is.readObject();
/*
* readObject()方法从输入流中读取字节序列,然后将字节序列反序列化为一个对象并返回。
*/
System.out.println(s.toString());
System.out.println("反序列化完毕");
} catch (IOException | ClassNotFoundException e) {
// TODO: handle exception
}
}
}
26万+

被折叠的 条评论
为什么被折叠?



