文档章节

java序列化-Serializable

liujiest
 liujiest
发布于 2016/07/23 23:56
字数 370
阅读 35
收藏 0

代码:

package code;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class SerializableTest implements Serializable {
	private static final long serialVersionUID = 1L;
	private String name = "who";
	private int age = 24;

	public static void main(String[] args) {
		write();
		// read();
	}

	/**
	 * 将对象序列化
	 * 
	 * @author LiuJie
	 * @time 2016年7月23日 下午11:41:09
	 */
	public static void write() {
		try {
			// ObjectOutputStream能把Object输出成Byte流
			ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\Users\\杰\\Desktop\\out.txt"));// 输出流保存的文件名为
			SerializableTest obj = new SerializableTest();
			obj.age = 11;
			oos.writeObject(obj);
			oos.flush(); // 缓冲流
			oos.close(); // 关闭流
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 反序列化
	 * 
	 * @author LiuJie
	 * @time 2016年7月23日 下午11:44:37
	 */
	public static void read()
	{
		ObjectInputStream oin = null;
		try {
			oin = new ObjectInputStream(new FileInputStream("D:\\Users\\杰\\Desktop\\out.txt"));
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		SerializableTest obj = null;
		try {
			obj = (SerializableTest) oin.readObject();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("name=" + obj.name);
		System.out.println("age=" + obj.age);
	}
}

序列化后的文件:

读取文件反序列化:

name=promonkey
age=22

静态变量不会序列化,也就是说吧name或age变成static,反序列化后输出的值还是当前类的静态变量值。

transient关键字修饰的变量也不能被序列化,这个关键字就是为了让序列化时忽略一些不希望序列化的值。

父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;

序列化是深复制,变量对象的值也会序列化。

 

© 著作权归作者所有

liujiest
粉丝 8
博文 75
码字总数 34353
作品 0
杭州
程序员
私信 提问
Android Serializable与Parcelable原理与区别

一、序列化、反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程。 对象的反序列化:把字节序列恢复为Java对象的过程。 (2) 序列化详细解释 ...

KingMing
2015/04/16
0
0
一些关于 Java 序列化的面试问题

Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你...

红薯
2011/04/18
1K
6
小伙子,你真的搞懂 transient 关键字了吗?

先解释下什么是序列化 我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组...

Java技术栈
03/06
0
0
(1)java序列化--java.io.Serializable接口解析

(PS:本文为作者原著,如需转载,请注明出处-_^) 使用java以来,序列化随处可见,至于为什么要用序列化、序列化能解决什么问题,作为一个普通的码农,一般不怎么会去深入研究,由于最近在看...

sumekey
2011/09/07
0
0
Serializable & Parcelable

对象序列化的简单介绍 所谓对象的序列化其实就是把JVM运行过程中生成的对象通过特殊的处理手段转换为字节形式的文件。转换之后就可以将其永久保存到磁盘中,或者以字节流进行网络传输。 在A...

吴七禁
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

干货 | 解读MySQL 8.0新特性:Skip Scan Range

MySQL从8.0.13版本开始支持一种新的range scan方式,称为Loose Skip Scan。该特性由Facebook贡献。我们知道在之前的版本中,如果要使用到索引进行扫描,条件必须满足索引前缀列,比如索引idx...

迷你芊宝宝
9分钟前
0
0
观点 | 云原生时代来袭 下一代云数据库技术将走向何方?

全面云化的时代已经到来,面对一系列的新技术和挑战,数据库市场将面临怎样的变革?作为云服务提供商,如何帮助更多的企业级用户把握“云”潮,提供最高效、最具价值的数据库解决方案? 日前...

zhaowei121
18分钟前
1
0
ReentrantLock是如何基于AQS实现的

ReentrantLock是一个可重入的互斥锁,基于AQS实现,它具有与使用 synchronized 方法和语句相同的一些基本行为和语义,但功能更强大。 lock和unlock ReentrantLock 中进行同步操作都是从lock方...

java菜分享
19分钟前
0
0
比特币钱包开发【C#】

在这个教程中,我们将使用C#来开发一个比特币钱包,我们使用NBitcoin这个库。教程中的代码实现了比特币的存储、接收和支付功能,可以很容易地移植到其他应用中。 如果要快速掌握在C#程序中N...

汇智网教程
19分钟前
0
0
centos7.4编译安装nginx

1、安装准备环境 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel pcre* 下载pcre wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.......

Marhal
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部