Java中的transient关键字

今天刷面试题,碰到了一道这样的题:

  

  上图中的transient关键字我第一次遇见,于是看了些博客,了解了它的用法。

transient关键字的作用:

  transient用来修饰类的成员属性,而被transient修饰的属性在对象被序列化时,不会进行序列化;

  所以transient关键字的作用就是让类的成员属性不被序列化。常用在没有必要进行序列化的属性之上,比如说一个矩形类有三个属性,分别为长、宽和面积,而面积可以通过长宽推导出来,所以如果需要序列化矩形类的对象,那这个面积属性可以不用序列化,其好处就是节约空间;

代码演示:

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 import java.io.IOException;
 4 import java.io.ObjectInputStream;
 5 import java.io.ObjectOutputStream;
 6 import java.io.Serializable;
 7
 8 public class Test implements Serializable{
 9
10     private Integer length;        //长
11     private Integer width;        //宽
12     private transient Integer area;    //面积,使用transient修饰
13
14     public Test() {
15     }
16
17     public Test(Integer length, Integer width) {
18         this.length = length;
19         this.width = width;
20         this.area = length * width;
21     }
22
23     public static void main(String[] args) throws IOException, IOException, ClassNotFoundException {
24         //创建对象
25         Test t = new Test(3, 4);
26
27         //输出原对象
28         System.out.println(t);
29
30         //创建对象输出流,将对象写入文件中
31         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file"));
32         oos.writeObject(t);
33
34         //创建对象输入流
35         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file"));
36         //从文件中读取对象
37         Test t2 = (Test)ois.readObject();
38
39         //输出反序列化得到的对象
40         System.out.println(t2);
41
42         oos.close();
43         ois.close();
44     }
45
46     @Override
47     public String toString() {
48         return "Test [length=" + length + ", width=" + width + ", area=" + area + "]";
49     }
50
51 }

代码结果:

  可以看到,经过反序列化后,length和width的值未改变,而area为null,表示area并未被序列化。

原文地址:https://www.cnblogs.com/tuyang1129/p/11198184.html

时间: 2024-10-03 14:45:04

Java中的transient关键字的相关文章

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

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

关于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 IO 序列化 transient关键字

Java IO 序列化 transient关键字 @author 敏敏Alexia 转自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化. 然而在实际开发过程

浅析Java中的final关键字

原文出处: 海子 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字

转载:浅析Java中的final关键字

文章转自:http://www.cnblogs.com/dolphin0520/p/3736238.html 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cn

(转)Java中的static关键字解析

转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: "static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途." 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键

Java中的static关键字解析

http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途.” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句

Java中的null关键字

先看一段代码 public class NULL { public static void Test(){ System.out.println("这是Test()的输出!!"); } public static void main(String[] args) { ((NULL)null).Test(); } } 上面的代码有没有错误? 答案是没有!! 编译运行 输出结果: 这是Test()的输出!! 这是因为Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将nu

浅析Java中的final关键字(转载)

自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰.final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方