Java 中关键字transient引出序列化与反序列化

一:transient(临时的)关键字

  1.transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。

  2.被transient关键字修饰的变量不能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。

  3.一旦变量被transient修饰,变量将不再是持久化的一部分,该变量内容在序列化后无法获得访问。也可以认为在将持久化的对象反序列化后,被transient修饰的变量将按照普通类成员变量一样被初始化。

二:java对象序列化

  当两个进程在进行远程通信时,彼此可以发送各种类型的数据 。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个java对象转化为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为java对象。只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初始对象中引用的其他所有对象的闭包

  1.概念

  序列化:把java对象转化为字节序列的过程。

  发序列化:字节序列恢复为java对象的过程。

  2.用途

  对象的序列化主要有两种用途:

  1)把对象的字节序列永久地保存到磁盘上,通常放到一个文件中。

  2)在网络上传送对象的字节序列。

  3.对象序列化代码示例

  

  ==================================================================

  

  结果:

  

  4.说明

  读取对象的顺序与写入时的顺序要一致

  对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态(transient)非静态字段(static)的值。

时间: 2024-10-11 11:08:58

Java 中关键字transient引出序列化与反序列化的相关文章

java中的对象的序列化与反序列化的知识点---IO学习笔记(四)

对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流,反序列化流 序列化流(ObjectOutputStream),是字节的过滤流->主要方法:writeObject() 反序列化流(ObjectInputStream)->主要方法:readObject() 序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 这个接口,没有任何方法,只是一个标准. 基本的对象序列化

Java中对文件的序列化和反序列化

public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objectFile.obj 表示存放序列化对象的文件*/ //序列化对象 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("c:\\test\\objectFile.obj")); Customer cust

关于Java中的transient关键字

Java中的transient关键字是在序列化时候用的,如果用transient修饰变量,那么该变量不会被序列化. 下面的例子中创建了一个Student类,有三个成员变量:id,name,age.age字段被transient修饰,当该类被序列化的时候,age字段将不被序列化. 1 import java.io.Serializable; 2 public class Student implements Serializable{ 3 int id; 4 String name; 5 tran

Java中的transient关键字,在移动开发中的使用

transient关键词修饰的属性是临时的,不会被序列化.那么开发移动接口的同志们应该特别注意使用,这样可以提高不少效率.当然其他方面也要适当使用,通过这个特性,可以提高序列化的效率! 百度解释如下,看似别扭难理解,明天去公司写段代码上海,让大家参考下! Java中的transient关键字,在移动开发中的使用,码迷,mamicode.com

关于java的关键字 transient

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化. 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,诚然,你可以让这个类来实现Externalizable接口,这个接口是Serilizable的子接口,但是你必须实现readExternal和writeE

Java中关键字continue、break和return的区别

Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break:   跳出循环体,继续执行循环外的函数体 return:   跳出整个函数体,函数体后面的部分不再执行 有代码才有真相: [java] view plain copy <span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimSun;fon

Java中的transient关键字

今天刷面试题,碰到了一道这样的题: 上图中的transient关键字我第一次遇见,于是看了些博客,了解了它的用法. transient关键字的作用: transient用来修饰类的成员属性,而被transient修饰的属性在对象被序列化时,不会进行序列化: 所以transient关键字的作用就是让类的成员属性不被序列化.常用在没有必要进行序列化的属性之上,比如说一个矩形类有三个属性,分别为长.宽和面积,而面积可以通过长宽推导出来,所以如果需要序列化矩形类的对象,那这个面积属性可以不用序列化,其好

java中的对象的序列化,以及新的try...catch块学习

对象的序列化和反序列化: 1.对象的序列需要实现java.util.Serializable或者是java.io.Externalizable接口. 2.Serializable只是一个接口,代表着可序列化,并没有定义任何的抽象方法,只能序列化非静态的,以及没有使用transient关键字修饰的属性,使用此接口最好声明一          个“private static final long serialVersionUID = 1L;”常量,确保在类的修改等操作之后,也能够反序列化 3.其中

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory