java序列化_Java序列化详解
![](/assets/blank.gif)
什么是序列化?
在Java中,对象序列化表示将对象表示为字节序列。字节包括对象的数据和信息。可以将序列化的对象写入文件/数据库,然后从文件/数据库中读取并反序列化。代表对象及其数据的字节可用于在内存中重新创建对象。
为什么我们需要序列化?
当您需要通过网络发送对象或存储在文件中时,通常使用序列化。网络基础结构和硬盘只能理解位和字节,而不能理解Java对象。序列化将Java对象转换为字节,然后通过网络发送或保存。
为什么我们要存储或传输对象?在我的编程经验中,有以下原因促使我使用可序列化的对象。
1. 对象的创建取决于很多上下文。创建后,其他组件需要其方法及其字段。
2. 创建对象并包含许多字段时,我们不确定该使用什么。因此,将其存储到数据库以供以后进行数据分析。
Java序列化示例
下面的示例演示如何使一个类可序列化以及对其进行序列化和反序列化。
package serialization;
import java.io.Serializable;
public class Dog implements Serializable {
private static final long serialVersionUID = -5742822984616863149L;
private String name;
private String color;
private transient int weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public void introduce() {
System.out.println("I have a " + color + " " + name + ".");
}}
package serialization;
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;
public class SerializeDemo {
public static void main(String[] args) {
//create an object
Dog e = new Dog();
e.setName("bulldog");
e.setColor("white");
e.setWeight(5);
//serialize
try {
FileOutputStream fileOut = new FileOutputStream("./dog.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Serialized dog is saved in ./dog.ser");
} catch (IOException i) {
i.printStackTrace();
}
e = null;
//Deserialize
try {
FileInputStream fileIn = new FileInputStream("./dog.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Dog) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("Dog class not found");
c.printStackTrace();
return;
}
System.out.println("nDeserialized Dog ...");
System.out.println("Name: " + e.getName());
System.out.println("Color: " + e.getColor());
System.out.println("Weight: " + e.getWeight());
e.introduce();
}}
Output:
Serialized dog is saved in ./dog.ser
Deserialized Dog...
Name: bulldog
Color: white
Weight: 0
I have a white bulldog.
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。
![](/assets/blank.gif)
![](/assets/blank.gif)
java序列化_Java序列化详解相关推荐
- java 冒泡排序_Java冒泡排序详解
Java冒泡排序 排序算法概述 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视, ...
- java 内部类_Java——内部类详解
说起内部类,大家肯定感觉熟悉又陌生,因为一定在很多框架源码中有看到别人使用过,但又感觉自己使用的比较少,今天我就带你具体来看看内部类. 内部类基础 所谓内部类就是在类的内部继续定义其他内部结构类. 在 ...
- java 适配器_java 适配器模式 详解(带电源插座适配 例子)
package com.zq.designpattern.adatper; /** * Created by zhengshouzi on 2015/10/26. */ //三孔插座的标准 inter ...
- PHP序列化_serialize_格式详解
PHP序列化 serialize 格式详解 1.前言 PHP (从PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不 过在PHP 手册中 ...
- java 8 新功能详解_Java 8和Java 14之间的新功能
java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...
- java 8 新功能详解_Java 8的8个新功能
java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...
- java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...
java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...
- java反射机制深入详解_Java反射机制深入详解
原标题:Java反射机制深入详解 一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时 ...
- java递归函数例子_Java递归函数详解附案例
递归函数在Java语言中得到了广泛的应用,它使得程序的编写过程更加的清晰明了.对Java初学者来讲,递归函数是需要学习的一个重要知识点.本文将附上案例和演示代码,具体为大家介绍递归函数的概念.要素以及 ...
- JAVA文件上传详解(附源码)
文章目录 JAVA文件上传详解(附源码) 1.准备工作 2.使用类介绍 FileItem类 ServletFileUpload类 3.代码编写 JAVA文件上传详解(附源码) 在web应用中,文件上传 ...
最新文章
- 薪酬管理的特点和注意事项[转]
- 牛客题霸 单链表的选择排序 C++题解/答案
- CF1540B-Tree Array【数学期望,dp】
- 计算机专业去荷兰还是瑞典,给申请计算机专业的同学几点建议
- 【BZOJ4774】修路 [斯坦纳树]
- 详解Vue八大生命周期钩子函数
- git:Failed to connect to github.com port 443:.....
- 大数据排重算法-布隆算法(BloomFilter)
- 【图像处理基础】基于matlab图像SRGB+Adobe RGB伽马校正【含Matlab源码 255期】
- 全国大学生计算机ms系统,全国计算机等级考试一级计算机基础及MS Office应用模拟练习系统...
- 内网DNS重要使用作用
- puppeteer学习(三)——抓取“相关搜索”关键词搜索豆瓣图书榜
- wps和office有什么区别?
- ApacheCN 机器学习译文集 20211111 更新
- 【一周头条盘点】中国软件网(2017.12.18~2017.12.22)
- 雅佳5000音色中英文对照表 AKAI EWI5000
- 一个快速测试PlayCanvas Demo 的工程(内附源码)
- 移动端SEO优化指南:详解移动站点收录、排名规则
- 缓存通俗解释_在超市购买牛奶解释了网络缓存
- 仿微信聊天记录气泡背景