`
cakin24
  • 浏览: 1390196 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

transient关键字与序列化

    博客分类:
  • java
阅读更多
一 介绍
transient关键字不会进行JVM虚拟机的序列化,但也可以自己进行序列化,要用到下面两个函数。这两个函数来自ArrayList源码,可以分析ArrayList源码的序列化和反序列化问题。这样做可以对有效元素进行序列化,不对无效元素进行序列化,以提高网络传输性能。
private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException
 
二 实例
package com.imooc.io;
 
import java.io.Serializable;
 
public class Student implements Serializable{
    private String stuno;
    private String stuname;
    //该元素不会进行jvm默认的序列化
    private transient int stuage
    
    public Student(String stuno, String stuname, int stuage) {
         super();
         this.stuno = stuno;
         this.stuname = stuname;
         this.stuage = stuage;
    }
 
    public String getStuno() {
         return stuno;
    }
    public void setStuno(String stuno) {
         this.stuno = stuno;
    }
    public String getStuname() {
         return stuname;
    }
    public void setStuname(String stuname) {
         this.stuname = stuname;
    }
    public int getStuage() {
         return stuage;
    }
    public void setStuage(int stuage) {
         this.stuage = stuage;
    }
    @Override
    public String toString() {
         return "Student [stuno=" + stuno + ", stuname=" + stuname + ", stuage="
                 + stuage + "]";
    }
}
 
package com.imooc.io;
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
public class ObjectSeriaDemo1 {
    public static void main(String[] args) throws Exception{
         String file = "demo/obj.dat";
         //1.对象的序列化
         ObjectOutputStream oos = new ObjectOutputStream(
                 new FileOutputStream(file));
         Student stu = new Student("10001", "张三", 20);
         oos.writeObject(stu);
         oos.flush();
         oos.close();
         ObjectInputStream ois = new ObjectInputStream(
                 new FileInputStream(file));
         Student stu1 = (Student)ois.readObject();
         System.out.println(stu1);
         ois.close(); 
    }
}
 
三 运行结果
Student [stuno=10001, stuname=张三, stuage=0]

 

 
1
0
分享到:
评论

相关推荐

    Java transient关键字与序列化操作实例详解

    Java transient关键字与序列化操作实例详解 Java语言中的transient关键字是用来修饰变量的,表明该变量不会被Java虚拟机(JVM)序列化,即不会被写入到二进制流中。序列化是Java语言中的一种机制,用于将对象转换为...

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列...同时,理解`transient`与`volatile`之间的区别也是处理复杂Java应用中的多线程和序列化问题的关键。

    Java中的transient关键字.doc

    transient 关键字的作用是告知 Java virtual machine(JVM)在序列化对象时,不要包括被标记为 transient 的属性。这意味着,当一个对象被序列化时,被标记为 transient 的属性不会被写入到输出流中,从而减少了序列...

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...

    Java之transient关键字.Java

    在给定的文件列表中,除了与`transient`关键字相关的`Java之transient关键字.md`文件,其他如`javaweb\Tomcat.md`、`javaweb\Cookie、Session、localStorage、sessionStorage区别和用法.md`等文件可能涉及Web开发中...

    Java transient关键字使用小记

    3. 序列化与反序列化示例 下面的代码展示了如何在序列化和反序列化过程中使用`transient`关键字。当`User`对象被序列化并写入文件,然后从文件中读取并反序列化时,`passwd`字段的值不会被保存和恢复。 ```java ...

    Java关键字Transient与串行化

    在Java编程语言中,`transient`关键字与对象的序列化(serialization)机制密切相关,它在处理对象状态的持久化时扮演着关键角色。本文将深入探讨`transient`关键字的功能、用途以及它如何影响Java对象的序列化过程。 ...

    Java transient关键字原理解析

    Java transient关键字原理解析 Java 中的 transient 关键字是一个重要的概念,它被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 序列化是对象进行持久化处理,也...

    java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象持久化和序列化密切相关。当一个字段被声明为`transient`时,它表明该字段的值不会随着对象的序列化而保存。这通常用于那些不希望或者不需要在序列化...

    java serializable 序列化与反序列化

    Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...

    java 对象的序列化与反序列化

    4. **非序列化字段**:有些字段可能不希望被序列化,可以使用`transient`关键字标记。这些字段在序列化过程中会被忽略。 5. **深拷贝与浅拷贝**:序列化实际上是实现了深拷贝,即创建了对象的一个完全独立的副本,...

    Java中的transient关键字介绍

    在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化密切相关。序列化是指将对象的状态转换为字节流,以便存储或在网络上传输。当一个类实现了`Serializable`接口,它的实例就可以被序列化...

    Java transient 关键字详解及实例代码

    Java中的`transient`关键字是用于标记类的成员变量,表明该变量不应该参与序列化过程。当一个类实现了`Serializable`接口,其对象可以被序列化,即将对象的状态转换为字节流,以便存储或在网络中传输。序列化是Java...

    Java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...

    Java序列化

    - `volatile` 关键字与序列化无关,但通常与多线程同步有关,序列化时不会受到影响。 6. **序列化代理(Serializable Proxy)** - Java允许使用 `writeObject()` 和 `readObject()` 方法来自定义序列化和反序列化...

    java序列化与反序列化

    请注意,静态字段和transient关键字修饰的字段不会被序列化。 Java序列化提供了两种主要的API用于操作对象流: 1. `ObjectOutputStream`: 这个类用于将Java对象写入 OutputStream,实现序列化。 2. `...

    java 序列化时排除指定属性

    // 添加transient关键字 } ``` `transient`关键字告诉Java编译器不要将该属性包含在序列化过程中。 - **使用`writeObject()`和`readObject()`方法**:重写`writeObject()`和`readObject()`方法来自定义序列化...

    IO流与序列化

    6. **序列化详解**:解释了如何实现序列化接口,序列化和反序列化的API用法,以及transient关键字的作用,该关键字可以防止某个成员变量被序列化。 7. **序列化优化**:讨论了如何通过实现Externalizable接口来自...

Global site tag (gtag.js) - Google Analytics