JAVA类的序列化

作用:用于对象的持久化,将对象写到硬盘中,需要用的时候再反序列化取出来。 
所谓序列化其实就是将程序中的数据(对象)通过某种方式,保存到本地中。 
然后可以在程序关闭之后还保存程序的某个执行状态,方便在程序下次 
执行的时候通过"反序列化"读取出来,并且能够还原数据的类型,从而延续程序退出时的状态。 
一般来说,我们会使用序列化保存一些需要持久化的数据,当然如果这个数据会比较庞大的话, 
我们就直接使用数据库了!所以,序列化实际上目前很多领域用的已经不多了,大部分使用 
都已被数据库替代了!

如何序列化和反序列化:

通过实现Serializable 接口来实现序列化

public class Person implements Serializable{
private String name;
private String sex; 

public Person(String name,String sex){
this.name=name;
this.sex=sex;
} 

public String getName() {
return name;
} 

public void setName(String name) {
this.name = name;
} 

public String getSex() {
return sex;
} 

public void setSex(String sex) {
this.sex = sex;
}
} 
public class TestDemo { 

public static void main(String[] args) {
//创建一个对象
Person people = new Person("张三","男");
try {
//实例化ObjectOutputStream对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\person.txt"));
//将对象写入文件
oos.writeObject(people);
oos.flush();
oos.close(); 

//实例化ObjectInputStream对象
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("C:\\person.txt")); 

try {
//读取对象people,反序列化
Person p = (Person)ois.readObject();
System.out.println("姓名:"+p.getName());
System.out.println("性别:"+p.getSex());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 

} catch (FileNotFoundException e) { 

e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} 

} 
时间: 2024-10-28 21:21:58

JAVA类的序列化的相关文章

java类实现序列化的方法

Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口 对象的序列化就是将对象写入输出流中. 反序列化就是从输入流中将对象读取出来. 用来实现序列化的类都在java.io包中,我们常用的类或接口有: ObjectOutputStream:提供序列化对象并把其写入流的方法 ObjectInputStream:读取流并反序列化对象 Serializable:一个对象想要被序列化,那么它的类就要实现 此接口,这个对象的所有属性(包括private属性.包括其

Java 类实现序列化的方法(二种)?

java.io.Serializable 接口或实现 Externalizable 接口. Collection 框架中实现比较要实现 Comparable 接口或 Comparator 接口,并实现比较方 法 原文地址:https://www.cnblogs.com/dingyi-boss/p/11434322.html

面试题:Java中对象序列化接口(Serializable)的意义

Serializable接口是一个里面什么都没有的接口 它的源代码是public interface Serializable{},即什么都没有. 如果一个接口里面什么内容都没有,那么这个接口是一个标识接口,比如,一个学生遇到一个问题,排错排了几天也没解决,此时,她举手了(示意我去帮他解决),然后我过去,帮他解决了,那么这个举手其实就是一个标识,自己不能解决的问题标示我去帮他解决,在Java中的这个Serializable接口是给JVM看的,告诉JVM,我不做这个类的序列化了,你(JVM)给我序

java中的序列化与反序列化,还包括将多个对象序列化到一个文件中

package Serialize; /** * Created by hu on 2015/11/7. *///实现序列化必须实现的接口,这就是一个空接口,起到标识的作用import java.io.Serializable; /** * 用来进行序列化和反序列化的类 * */public class person implements Serializable { private int age; private String name; private String sex; public

java类和对象的基础(笔记)

封装: 首先封装可以保护对象,防止用户直接存取对象的内部细节:其次封装也保护了客户端,防止对象实现部分的改变可能产生的副作用,即实现部分的改变不会影响到客户端的改变. 私有代码和数据仅能被对象本身的其他部分访问,不能被该对象外的任何程序部分所访问.当代码或数据是公有的时,虽然它们是定义在对象中的,但程序的其他部分也可以访问. 继承性体现了类之间的是一种(IS-A)关系. 类之间的关系还有组合.关联等. 类的修饰符 : 类的访问修饰符可以是public或者缺省.若类用public修饰,则该类称为公

【Java基础】序列化与反序列化深入分析

一.前言 复习Java基础知识点的序列化与反序列化过程,整理了如下学习笔记. 二.为什么需要序列化与反序列化 程序运行时,只要需要,对象可以一直存在,并且我们可以随时访问对象的一些状态信息,如果程序终止,那么对象是肯定不会存在的,但是有时候,我们需要再程序终止时保存对象的状态信息,之后程序再次运行时可以重新恢复到之前的状态,如,玩家玩游戏退出时,需要保存玩家的状态信息(如等级.装备等等),之后玩家再此登入时,必须要恢复这些状态信息.我们可以通过数据库手段来达到这个保存状态的目的,在Java中,我

java类修饰符

java的修饰符有:权限修饰符:public.protected.default.private                修饰符:abstract.static.final public   使用对象:最广,类.接口.变量.方法    protected使用对象:变量.方法 注意:不能修饰类(外部类)    default  使用对象:类.接口.变量.方法.(即缺省,什么也不写)    private  使用对象:变量.方法 注意:不能修饰类(外部类) abstract使用对象:类.接口.

【Java】Java原生的序列化和反序列化

写一个Java原生的序列化和反序列化的DEMO. 需序列化的类: package com.nicchagil.nativeserialize; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String userName; public User

Java类文件结构

Java类文件结构 阅读目录 一.概述 二.Class类文件的结构 三.字节码指令 四.参考资料 回到顶部 一.概述 实现语言无关性的基础是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,只与"Class文件"这种特定的二进制文件所关联,Class文件中包含了Java虚拟机指令集合符号表以及若干其它辅助信息.Java虚拟机作为一个通用的.机器无关的执行平台,任何其他语言都可以将其作为语言的产品交付媒介. 回到顶部 二.Class类文件的结构 Class文件是一