序列化和反序列化

序列化和反序列化

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值