作用:

在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

 例子

下面创建一个people类
/**
* Copyright (C), 2018-2018,
* FileName: People
* Author: 大象
* Date: 2018-05-17 9:23
*/
package com.java.serializable; import java.io.Serializable; /**
* 〈〉<br>
*
* @author daxiang
* @create 2018-05-17
* @since 1.0.0
*/
public class People implements Serializable{ private static final long serialVersionUID = -4232667770371862548L; private String name;
private String sex;
private int age; 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 int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

  

/**
* Copyright (C), 2018-2018,
* FileName: Test
* Author: 大象
* Date: 2018-05-17 9:22
*/
package com.java.serializable; import java.io.*;
import java.text.MessageFormat; /**
* 〈〉<br>
*
* @author daxiang
* @create 2018-05-17
* @since 1.0.0
*/
public class SerializableTest {
public static void main(String[] args) throws Exception {
SerializablePeople();//序列化Person对象
People p = DeserializePerson();//反序列Perons对象
System.out.println(MessageFormat.format("name={0},age={1},sex={2}",
p.getName(), p.getAge(), p.getSex()));
} /**
* 序列化
*/
private static void SerializablePeople() throws Exception, IOException {
//构建对象
People people = new People();
people.setAge(12);
people.setName("张三");
people.setSex("男"); //序列化写入文件
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File("people.txt")));
oo.writeObject(people);
oo.close(); } /**
* 反序列化
*
* @return
* @throws Exception
* @throws IOException
*/ private static People DeserializePerson() throws Exception, IOException {
//读取文件
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
new File("people.txt")));
//提取对象
People people = (People) ois.readObject();
System.out.println("people对象反序列化成功!");
return people;
} }

  

Java基础--序列化和反序列化的更多相关文章

  1. Java基础—序列化与反序列化(转载)

    转载自: Java序列化与反序列化 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化 ...

  2. Hadoop基础-序列化与反序列化(实现Writable接口)

    Hadoop基础-序列化与反序列化(实现Writable接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.序列化简介 1>.什么是序列化 序列化也称串行化,是将结构化 ...

  3. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  4. Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student {    private String nam ...

  5. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  6. Java之序列化和反序列化

    序列化的对象: package test_demo.SerializableOper; import java.io.Serializable; /* * 序列化对象需要实现序列号接口 * */ pu ...

  7. java之序列化与反序列化

    1.这里主要是介绍Protobuf提供的序列化与反序列化的高效性.相对于传统的java提供的序列化来说,Protobuf的效率提高了很多倍.但是也有不足的地方,就是proto在对象序列化的时候抛弃了很 ...

  8. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  9. java基础( 九)-----深入分析Java的序列化与反序列化

    序列化是一种对象持久化的手段.普遍应用在网络传输.RMI等场景中.本文通过分析ArrayList的序列化来介绍Java序列化的相关内容.主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了 ...

随机推荐

  1. python操作MySQL--实例

    有一段时间,没更新,但这都不是自己懒惰的借口,希望自己能坚持下去: python可以操作MySQL 数据库,需要安装的是MySQL-python,并且实现读入excel表及生成excel 表,则需要x ...

  2. a 标签一些特殊用法

    发邮件 <a href="mailto:youemail@mail.com?subject=邮件标题&body=邮件内容">告诉我们</a> 打电话 ...

  3. JS基础语法(二)

    目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...

  4. linux可用内存判断

    free是完全没有占用的空闲内存,Available 减 free是操作系统为了优化运行速度拿来调用的内存, 程序需要的话操作系统会进行释放.所以一般看Available即可. free+buffer ...

  5. VUE3 之 插槽的使用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 非理性定律告诉我们: 人们总是习惯于以情感去判断眼前的事物,非理性的去做决定. 对于长远的利益,人们更愿意去选择短期的利益. 因此在做决定前要让自己冷静,理性的分析,让自己看的更远. 言归 ...

  6. plsql 储存过程 参数的传递方式?

    /* 存储过程 一.oracel存储过程 1.没有返回值 return 值: 2.用输出参数来代替返回值: 3.输出参数可以有多个 二.参数的传递方式 1. 按位置传递 2. 按名字传递 3.混合传递 ...

  7. Java 给Word每一页设置不同图片水印效果

    Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以Java代码为例, ...

  8. Redis集成SpringBoot

    简介 此案例中使用Centos7+redis+SpringBoot. redis安装 https://www.cnblogs.com/xiaofengshan/p/15860447.html 添加依赖 ...

  9. RocketMQ在Windows和Linux下的安装

    windows下的RocketMQ的安装 鉴于Quick Start,选择单mater模式,环境简单: win10 64 jdk1.8 maven 3.5.4 Git rocketMQ安装版本 4.4 ...

  10. npm 查看一个包的版本信息

    有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要关注包的版本信息: 现在,假设我们需要 jquery ,但是jquery现在有很多版本,我们如何通过npm查看呢? ...