package com.java.serializable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * JAVA序列化详解 * @author yfding * */ public class SerializableTest { public static void main(String[] args) { /** * 基本概念 * 1.把对象转换成字节序列的过程称为对象的序列化 * 2.把字节序列转换成对象的过程称为对象的反序列化 * * 序列化的用途 * 1.把对象保存到硬盘上 * 2.网络传输中 * * 注意点 * 1.如果Student对象为实现Serializable接口,出现异常【java.io.NotSerializableException: com.java.serializable.Student】 * 2.serialVersionUID是java编译器运行时根据java类自动生成的,建议在序列化类对象时生成serialVersionUID * 3.如果不生成serialVersionUID,当我们在类中新增方法,或者属性时,在反序列化时,java会重新生成一个新的serialVersionUID,导致之前序列化的文件不能被反序列化 * */ // 序列化Student对象 SerializableTest.SerializeStudent(); // 反序列化Student对象 SerializableTest.DeserializeStudent(); } /** 序列化Student */ private static void SerializeStudent(){ Student student = new Student("yfding",18); try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:/admin-pc/Student.txt"))); oos.writeObject(student); oos.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("序列化Student对象失败。"); return; } System.out.println("序列化Student对象成功。"); } private static void DeserializeStudent(){ Student student = null; try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("C:/admin-pc/Student.txt"))); student = (Student) ois.readObject(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("反序列化Student对象失败。"); return; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("反序列化Student对象失败。"); return; } System.out.println("反序列化Student对象成功。Student-toString()----"+student.toString()); } } class Student implements Serializable{ private static final long serialVersionUID = -231956256888721831L; private String name; private int age; /*private int sex; public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; }*/ public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } }
相关推荐
Java对象Serializable接口实现详解 Java中的Serializable接口是java.io包中定义的,用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的...
### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...
`Serializable` 是Java标准库提供的一种简单的序列化方式,位于`java.io`包下。任何实现了`Serializable`接口的类,其对象都可以被序列化。实现这个接口不需要实现任何方法,只需要在类定义上添加`implements ...
Java 中的 Serializable 接口作用详解 Java 中的 Serializable 接口是一个非常重要的接口,它允许对象被序列化,换句话说,就是将对象转换成字节序列,以便于存储或通过网络传输。Serializable 接口的作用主要体现...
### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...
### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...
首先,`Serializable`接口是Java提供的标准序列化机制,它的主要作用是将对象的状态转换为字节流,便于存储到磁盘、网络传输或RMI(Remote Method Invocation)调用等。然而,`Serializable`的序列化和反序列化速度...
Java事务处理详解 Java事务处理是指在Java应用程序中对事务的管理和控制。事务是指一系列的操作,Either all succeed or all fail。Java事务处理的目的是为了确保数据的一致性和完整性。 Spring是Java事务处理的...
Java的`Serializable`接口和`ObjectOutputStream/ObjectInputStream`用于实现这一过程。 7. **NIO(非阻塞I/O)**:Java的`java.nio`包提供了非阻塞I/O的支持,这对于高并发和低延迟的网络应用特别有用。`Selector`...
`StringBuffer`是Java中处理字符串的类,它继承自`AbstractStringBuilder`并实现了`Serializable`和`CharSequence`接口。它的主要功能是在字符串操作(如拼接、插入、删除等)过程中提供高效且线程安全的操作。 2....
### Java序列化(Serializable)与反序列化详解 #### 序列化概念与应用场景 序列化是指将程序中的对象转换为一系列字节序列的过程,主要用于保存对象的状态以便将来使用或者在网络之间传输对象。Java提供了内置的...
### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...
- **对象序列化**:Java的Serializable接口,允许对象转换为字节流进行网络传输。 6. **并发与多线程** - **并发处理**:在服务端,多线程用于处理多个客户端连接,提高服务器的并发能力。 - **线程安全**:在...
### Java 类中 `serialVersionUID` 详解 #### 一、`serialVersionUID` 概述 在 Java 中,`serialVersionUID` 是一个与类关联的长整型常量,用于支持序列化机制。当一个对象被序列化时,该对象所属类的 `...
Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何...
在Java编程语言中,`enum`(枚举)是一种特殊的类,用于定义一组固定的常量。这个特性在很多场合下非常有用,比如表示状态、角色、颜色等有限且不变的集合。本文将深入探讨Java `enum`的用法,包括其基本概念、创建...
### JAVA2SDK全部类库详解 #### java.io 包概览 `java.io`包是Java标准库中非常重要的组成部分之一,它提供了大量的类和接口,用于处理输入/输出流、文件系统操作以及对象的序列化等。这些功能对于开发各种类型的...
### Java Streams 和 Serialization 详解 在Java编程语言中,数据的读取与写入操作是通过流(Streams)实现的。此外,为了保存对象的状态,Java提供了序列化(Serialization)机制。本文将深入探讨Java中的流操作...
本章节主要讲解Java的序列化机制,包括Serializable接口、Externalizable接口、transient关键字、serialVersionUID变量等。 Java学习系列(十三):Java面向对象之界面编程 本章节主要讲解Java的界面编程,包括AWT...