ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:18.70KB ,
资源ID:2842529      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2842529.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java对象的序列化和反序列化.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java对象的序列化和反序列化.docx

1、Java对象的序列化和反序列化Java对象的序列化和反序列化一、序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬

2、盘中的对象还原到内存中。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。二、JDK类库中的序列化APIjava.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再

3、把它们反序列化为一个对象,并将其返回。只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。对象序列化包括如下步骤:1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;2) 通过对象输出流的writeObject()方法写对象。对象反序列化的步骤如下:1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;2

4、) 通过对象输入流的readObject()方法读取对象。对象序列化和反序列范例:定义一个Person类,实现Serializable接口复制代码 1 import java.io.Serializable; 2 3 /* 4 * ClassName: Person 5 * Description:测试对象序列化和反序列化 6 * author xudp 7 * version 1.0 V 8 * createTime 2014-6-9 下午02:33:25 9 */10 public class Person implements Serializable 11 12 /*13 * 序列化I

5、D14 */15 private static final long serialVersionUID = -5809782578272943999L;16 private int age;17 private String name;18 private String sex;19 20 public int getAge() 21 return age;22 23 24 public String getName() 25 return name;26 27 28 public String getSex() 29 return sex;30 31 32 public void setAg

6、e(int age) 33 this.age = age;34 35 36 public void setName(String name) 37 this.name = name;38 39 40 public void setSex(String sex) 41 this.sex = sex;42 43 复制代码序列化和反序列化Person类对象复制代码 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.FileO

7、utputStream; 5 import java.io.IOException; 6 import java.io.ObjectInputStream; 7 import java.io.ObjectOutputStream; 8 import java.text.MessageFormat; 9 10 /*11 * ClassName: TestObjSerializeAndDeserialize12 * Description: 测试对象的序列化和反序列13 * author xudp14 * version 1.0 V15 * createTime 2014-6-9 下午03:17:

8、2516 */17 public class TestObjSerializeAndDeserialize 18 19 public static void main(String args) throws Exception 20 SerializePerson();/序列化Person对象21 Person p = DeserializePerson();/反序列Perons对象22 System.out.println(MessageFormat.format(name=0,age=1,sex=2,23 p.getName(), p.getAge(), p.getSex();24 25

9、26 /*27 * MethodName: SerializePerson 28 * Description: 序列化Person对象29 * author xudp30 * throws FileNotFoundException31 * throws IOException32 */33 private static void SerializePerson() throws FileNotFoundException,34 IOException 35 Person person = new Person();36 person.setName(gacl);37 person.setAg

10、e(25);38 person.setSex(男);39 / ObjectOutputStream 对象输出流,将Person对象存储到E盘的Person.txt文件中,完成对Person对象的序列化操作40 ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(41 new File(E:/Person.txt);42 oo.writeObject(person);43 System.out.println(Person对象序列化成功!);44 oo.close();45 46 47 /*48 * Method

11、Name: DeserializePerson 49 * Description: 反序列Perons对象50 * author xudp51 * return52 * throws Exception53 * throws IOException54 */55 private static Person DeserializePerson() throws Exception, IOException 56 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(57 new File(E:/Person.txt);

12、58 Person person = (Person) ois.readObject();59 System.out.println(Person对象反序列化成功!);60 return person;61 62 63 复制代码代码运行结果如下:序列化Person成功后在E盘生成了一个Person.txt文件,而反序列化Person是读取E盘的Person.txt后生成了一个Person对象 三、serialVersionUID的作用serialVersionUID: 字面意思上是序列化的版本号,凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量1 private

13、static final long serialVersionUID实现Serializable接口的类如果类中没有添加serialVersionUID,那么就会出现如下的警告提示用鼠标点击就会弹出生成serialVersionUID的对话框,如下图所示:serialVersionUID有两种生成方式:采用这种方式生成的serialVersionUID是1L,例如:1 private static final long serialVersionUID = 1L;采用这种方式生成的serialVersionUID是根据类名,接口名,方法和属性等来生成的,例如:1 private static

14、final long serialVersionUID = 4603642343377807741L;添加了之后就不会出现那个警告提示了,如下所示:扯了那么多,那么serialVersionUID(序列化版本号)到底有什么用呢,我们用如下的例子来说明一下serialVersionUID的作用,看下面的代码:复制代码 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.ObjectInputStream; 7 import java.io.ObjectOutputStream; 8 import java.io.Serializable; 9 10 public class TestSerialversionUID 11 12 public static void main(String args) throws Exception 13 SerializeCustomer();/ 序列化Customer对象14 Customer customer

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1