`
cakin24
  • 浏览: 1343003 次
  • 性别: 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序列化操作相关实现方法与操作注意事项,需要的朋友可以参考下

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

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

    Java transient关键字使用小记

    哎,虽然自己熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~...

    什么是Java的序列化和反序列化?如何实现对象的序列化和反序列化?(java面试题附答案).txt

    代码中,我们定义了一个 Person 类,并实现了 Serializable 接口。Person 类有两个属性:name 和 age,其中 age 属性被标记为 ...同时,为了避免序列化敏感信息,可以使用 transient 关键字标记不需要序列化的字段。

    深入探索Java对象的序列化

    深入探索Java对象的序列化 对象序列化就是把对象写入到输出流中,用来存储或者传输。...实现了序列化接口的类,如果其成员不需要序列化进去,则使用transient关键字进行修饰。 下面给出个例子:

    Java关键字—-transient

    本篇文章序列化、反序列化用的类是同一个类,可以通过注释main中1然后修改Stu类实现有无transient关键字修饰、serialVersionUID是否不同,得到以下结果: 1、serialVersionUID的数值大小不会影响序列化后的字节数...

    Java 序列化的高级认识1

    Transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient 变量的值被设为

    J2SE中的序默认序列化

    要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑... } 则company_flag字段将不会参与序列化与反序列化,但同时你也增加了为他初始值的责任。这也是序列化常常导致的问题之一。因为序列化相当于一个只接受数

    队列分享-易群1

    // 条件队列的第一个节点// 不要管这里的关键字 transient,是不参与序列化的意思private transient Node firstWaiter

    java8stream源码-java8-cert:一些用于练习Java8OCP的代码

    transient关键字(=“不应序列化字段”) 可变参数 字符串生成器 instanceof确切行为(在接口上使用null和用法) 包和导入(静态导入,重要的java.*包) 更多关键词: synchronized 、 transient 、 native 回顾:...

    程序员面试刷题的书哪个好-javonical:规范Java技术测试

    程序员面试刷题的书哪个好Javonical 作为一名专业的自由程序员,我参加了(并进行了)我应得的 Java 技术测试。 它们通常是申请职位时的第一步,因此您必须确保熟悉预期的答案。...阻止该字段被序列化。

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】Java序列化与反序列化 27 为什么需要序列化与反序列化 28 如何实现Java序列化与反序列化 28 【基础】String s = new String("xyz");创建了几个字符串对象 30 【基础】接口是否可继承(extends)接口?抽象类...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例112 序列化与对象克隆 139 实例113 深克隆效率的比较 141 实例114 transient关键字的应用 143 5.7 接口和内部类 145 实例115 使用sort()方法排序 145 实例116 简化compareTo()方法的重写 146 实例117 策略模式的...

    整理后java开发全套达内学习笔记(含练习)

    序列化,串行化 ['siәriәlaiz]'(serializable adj.)(deserialize反序列化,反串行化) Socket [java] 网络套接字['sɒkit] stack n.堆栈 [stæk] (对应 heap 堆) statement 程序语句; 语句 ['steitmәnt]' n. 陈述,...

    java8集合源码-Java:Java

    Java中序列化和反序列化的区别。 什么是SerialVersionUID? 内部类和子类的区别。 JSON 相对于 XML 的优势是什么? 我们可以两次导入相同的包/类吗? JVM 会在运行时加载包两次吗? 静态加载和动态类加载的区别? ...

    java面试题

    65. 什么是java序列化,如何实现java序列化? 48 65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 ...

Global site tag (gtag.js) - Google Analytics