java学习对象序列化及解序列化

111 阅读1分钟

对象的序列化就是,把对象状态(属性和方法)用一串字符序列存储在文件中,多用于把这些序列放在数据库里,为了记录对象的状态,以便下一次直接拿来用。举个例子就是像我们玩游戏,像我的世界,可以把我们做过的事情保存起来,下一次登录时,便可直接在之前的基础上继续玩耍…
学习体会对象序列化的基本过程,用一个简单的对象来进行操作。
这里用到的接口是Serializable,这个接口只是为了告诉虚拟机这个类可以被序列化。
注意:若这个类里用到其他类对象,也要保证其他类对象引用了这个接口,即保证其他类也可以被序列化。
另外,如果在类中某个变量或方法不要被序列化,则用transient声明类型,则序列化时会跳过。
首先,是对象的序列化:
把对象状态(属性和方法)保存下来

import java.io.*;
public class Box implements Serializable{
	private int width;
	private int height;
	
	public void setwidth(int w){
		width=w;
	}
	public void setheightz(int h){
		height=h;
	}
	
	public static void main(String[] args){
		
		Box mybox=new Box();
		mybox.setwidth(20);
		mybox.setheightz(30);
		
		try{
		FileOutputStream fs =new FileOutputStream("xvliehua.ser");
		ObjectOutputStream os=new ObjectOutputStream(fs);
		os.writeObject(mybox);
		os.close();
			
		}
		catch(Exception ex){
			ex.printStackTrace();	
		}
	  } 
}

用Notepad++查看序列化结果(写入.ser文件):
在这里插入图片描述
也可以写成txt,查看:
在这里插入图片描述
然后,对象解序列化:
提取已经保存的对象

public static void main(String[] args){
		try{
		FileInputStream fs =new FileInputStream("xvliehua.txt");//序列化的文件
		ObjectInputStream os=new ObjectInputStream(fs);
		Object one =os.readObject();//读取对象
		Box mybox=(Box) one;//类型转换
		os.close();
			
		}
		catch(Exception ex){
			ex.printStackTrace();	
		}
	  }