对象序列化

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法 keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法。 阅读详情

一、什么是对象序列化?

对象序列化:就是将一个对象转换为二进制数据流。

如果一个类对象要想实现对象序列化,怎对象所在的类必须实现Serializable(序列化)接口。

在此接口中没有任何的方法,此接口只是作为一个标识,表示本类的对象具备了序列化的能力而已。

如果要想完成对象的序列化,则还要依靠ObjectOutputStream类和 ObjectInputStream类,前者属于序列化操作,后者属于反序列化操作。

package com.demo.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

public class SerializableDemo {
	public static void main(String[] args) throws IOException {
		OutputStream outputStream= new FileOutputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectOutputStream oop = new ObjectOutputStream(outputStream);
		Person person = new Person(11, "张三");
		oop.writeObject(person);
		outputStream.close();
		oop.close();
	}

}
class Person implements Serializable{
	private int age;
	private String name;
	public Person(int age, String name) {
		this.age = age;
		this.name = name;
	}
	public String toString(){
		return "姓名:"+name +"年龄:"+age;
	}
	
}

//结果: sr com.demo.io.Person窹{NDp I ageL namet Ljava/lang/String;xp   t 寮犱笁
对象被序列化之后,就可以通过ObjectInputStream进行反序列化的操作。
package com.demo.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class UNSerializableDemo {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		InputStream inputStream= new FileInputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectInputStream ois = new ObjectInputStream(inputStream);
		Object object=ois.readObject();
		Person person = (Person)object;
		System.out.println(person);
	}

}
以上的操作实际上是将整个对象进行序列化的操作,如果现在假设类中的某个属性不希望被序列化的话,则要使用transient(短暂的)关键字声明。
package com.demo.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

public class SerializableDemo {
	public static void main(String[] args) throws IOException {
		OutputStream outputStream= new FileOutputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectOutputStream oop = new ObjectOutputStream(outputStream);
		Person person = new Person(11, "张三");
		oop.writeObject(person);
		outputStream.close();
		oop.close();
	}

}
class Person implements Serializable{
	private transient int age;
	private transient String name;
	public Person(int age, String name) {
		this.age = age;
		this.name = name;
	}
	public String toString(){
		return "姓名:"+name +"年龄:"+age;
	}
	
}

//结果 sr com.demo.io.Person`?e巌覧  xp

package com.demo.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class UNSerializableDemo {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		InputStream inputStream= new FileInputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectInputStream ois = new ObjectInputStream(inputStream);
		Object object=ois.readObject();
		Person person = (Person)object;
		System.out.println(person);
	}

}

//结果:姓名:null年龄:0

如何同时对多个对象一起进行序列化操作呢?

Object类可以接收任意的引用数据类型,包括数组。

package com.demo.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

public class SerializableDemo {
	public static void main(String[] args) throws IOException {
		OutputStream outputStream= new FileOutputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectOutputStream oop = new ObjectOutputStream(outputStream);
		Person persons[] = {new Person(11, "张三"),new Person(12, "李四"),new Person(13, "王五")};
		oop.writeObject(persons);
		outputStream.close();
		oop.close();
	}

}
class Person implements Serializable{
	private  int age;
	private  String name;
	public Person(int age, String name) {
		this.age = age;
		this.name = name;
	}
	public String toString(){
		return "姓名:"+name +"年龄:"+age;
	}
	
}

//结果 ur [Lcom.demo.io.Person;粸)oz?;  xp   sr com.demo.io.Person窹{NDp I ageL namet Ljava/lang/String;xp   t 寮犱笁sq ~    t 鏉庡洓sq ~    
//t 鐜嬩簲

package com.demo.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class UNSerializableDemo {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		InputStream inputStream= new FileInputStream("g:"+File.separator+"SerializableDemo.txt");
		ObjectInputStream ois = new ObjectInputStream(inputStream);
		Object object=ois.readObject();
		Person persons[] = (Person[])object;
		for(Person person:persons){
			System.out.println(person);
		}
		
	}

}

//结果:姓名:张三年龄:11
//姓名:李四年龄:12
//姓名:王五年龄:13

如果对一组对象进行序列化操作则必须使用数组概念


ABAP 系统里使用 SAP Joule 辅助编程的前提条件 只是说这些大语言模型是针对互联网上能够挖掘到的所有数据进行训练,不像 SAP Joule 那样术业有专攻,仅仅深耕 SAP 技术和业务领域,因此大伙儿对 SAP Joule 的期望值,也远远高于通过大语言模型。SAP Joule 从 ABAP Development Tool 的 Chat 窗口中接收到的对话请求,都会路由到 SAP BTP 上的 AI Foundation.在上述 ABAP 环境中启用 SAP Joule,需要购买额外的 license:8019124. 阅读详情

相关推荐

从零上手SKILL脚本:在Virtuoso中实现版图绘制自动化

本文详细介绍了如何使用SKILL脚本在Virtuoso中实现版图绘制自动化,从基础操作到高级技巧全面覆盖。通过抓取操作日志、转换交互式函数为程序式函数,以及核心函数深度解析,帮助读者快速掌握SKILL脚本编程,大幅提升版图设计效率。文章还提供了实际工程应用案例和调试优化技巧,适合从零开始的初学者。

weixin_28742653的博客 763

java中的序列化与反序列化及其源码分析(特别详细)

Java中的序列化概念序列化与反序列化自定义序列化源码分析 概念 把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见...

qq_36744284的博客 1510

stm32cubeMX使用HAL库点亮LED流水灯

目录

weixin_46129506的博客 3798

java 对象序列化

如果需要更复杂的序列化控制,可以定义和// 调用默认序列化方法// 进行额外处理(例如加密某些字段)// 调用默认反序列化方法// 进行额外处理(例如解密某些字段)当然我们也可以自定义序列化过程。

sjb2274540432的博客 1850

TEC控制器芯片 ADN8835 中文数据手册

ADN8835是一款高集成度的单芯片TEC控制器。它包括线性电压调节模块脉冲宽度调制(PWM) 电压调节模块和两个零漂移、轨到轨斩波放大器。线性控制器和PWM驱动器用于控制H桥配置中的内部功率MOSFET。通过测量热传感器反馈电压,并使用集成的运算放大器作为比例-积分-微分(PID)补偿器来调理信号,ADN8835通过TEC驱动电流,将连接至TEC模块的激光二极管或无源组件的温度稳定到编程的目标温度。

lu2289504634的博客 9535

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2843

序列化对象

对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列 化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制 流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序 一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),都可以 将这种二进制流恢复成原来的Java对象。 序列化的含义和意义 序列化机制允许将实现序列化的J...

weixin_42047392的博客 367

【ZYNQ】OV5640 图像采集与显示

OV5640 是豪威(OmniVision)半导体公司推出的高性能的 CMOS 数字图像传感器,支持最高 500 万像素图像采集,支持 RAW RGB、RGB565、YCbCr422 等图像格式输出,可应用于手机、平板等电子设备。本文主要介绍如何使用 Zynq 驱动 OV5640 摄像头进行图像采集,并通过 HDMI 实时显示。

洋洋Young的博客 1433

java 对象怎么序列化,java对象序列化总结

java对象序列化小结百度百科上介绍序列化是这样的:序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化使其他代码可以查看或修改那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 Serializa...

weixin_39896839的博客 463

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1082

Java对象流、对象序列化与反序列化

Java对象流、对象序列化与反序列化 对象的序列化可以将一个对象的成员信息保存为一个datdatdat文件存到硬盘上,反序列化就是可以直接从该文件读该对象。 package Exp7; import java.io.*; class PersonalInfo implements Serializable { //实体类实现接口Serializable private static final long serialVersionUID = 1L; private String na

Harris-H的博客 569

【Pytorch实战教程】基于RML2018的融合网络分类 | LSTM网络和ResNet网络融合 | 含数据集的处理

这段代码是从原始数据中读取所选择的数据,画出星座图,并将星座图保存本地,然后将IQ数据保存成mat文件,将图片数据读取之后保存为npy文件,方便后续融合网络使用。

若北辰 928

C#对象反序列化与对象序列化

C#对象反序列化与对象序列化 对象序列化的介绍 1、.net支持对象序列化的几种方式 二进制序列化  SOAP序列化  XML序列化 2、几种序列化的区别 二进制格式和SOAP格式可序列化一个类型的所有可序列化字段,不管       使用二进制方式的序列化与反序列化的代码 using System; using System.Collections.Generic; usi

GaraMaps的博客 1988

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

对象的序列化和反序列化

对象序列化: 目标:将对象保存到磁盘中,或允许在网络中直接传输对象。 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的java对象。 含义:序列化机制将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在磁盘上,或通过网络...

weixin_42373873的博客 643

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

对象的序列化

对象的序列化: 所谓的对象序列化就是将内存中对象转换成二进制之后进行传输到指定的文件,也可以在网络之间进行传输,对象的序列化需要使用到的类ObjectOutputStream类 public ObjectOutputStream(OutputStream out) throws IOException 构造方法,需要一个字节输出流对象作为参数 public final void writeObje...

慕北丶 185

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java对象序列化

1.说明所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。而对象序列化包含序列化和反序列化二部分,序列化是把Java对象转换为字节序列的过程,反序列化是把字节序列恢复为Java对象的过程。2.用途对象序列化主要有二种用途,一个是把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中,也叫持久化对象;另一个是在网络上传送对象的字节序列,也叫网络传输对象。3.实现序...

水木年华的博客 1851

java 对象序列化要序列化那些内容

1.java的对象序列化,只保存对象的类型信息和属性类型和属性值,三部分数据。对象中的方法,不管有多少,都不会进行序列化。package com.hs.javafan; import java.io.Serializable; public class SerializableObject implements Serializable { private String name; private int age; private String address; pub

Alex的专栏 1345

关于对象序列化

本文主要讲: 1.引言-为什么要使用对象序列化以及序列化的好处 2.写代码说明怎么序列化和反序列化 3.序列化的控制(定义以及Transient关键字) 4.对象序列化的的限制 一、引言        当你创建对象时,只要你需要,它就会一直存在,但是在程序终止时,无论如何它都不会继续存在。尽管这么做肯定是有意义的的,但是仍旧存在某些情况,如果对象能够在程序不与行的情况下仍能存在并保存其...

cb_lcl的博客 323
上一篇: 对象序列化
下一篇: JAVA网络编程
跳跳
博客等级 码龄15年 7粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值