下面这段话来自百度百科:
java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。
下面给出示例:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.xiva.domain; import java.io.Serializable; /** * * @author Xiva */ public class Traffic implements Serializable{ private int logId; private String logName; private String logPosition; private String logCarNumber; private transient String logTime; public String getLogCarNumber() { return logCarNumber; } public void setLogCarNumber(String logCarNumber) { this.logCarNumber = logCarNumber; } public int getLogId() { return logId; } public void setLogId(int logId) { this.logId = logId; } public String getLogName() { return logName; } public void setLogName(String logName) { this.logName = logName; } public String getLogPosition() { return logPosition; } public void setLogPosition(String logPosition) { this.logPosition = logPosition; } public String getLogTime() { return logTime; } public void setLogTime(String logTime) { this.logTime = logTime; } }
调用示例:
package com.xiva.baseKnowledge; import com.xiva.domain.Traffic; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author XIVA */ public class ReverseString { public static String reverseStr(String orignalStr){ StringBuilder sBuffer = new StringBuilder(orignalStr); sBuffer.reverse(); return sBuffer.toString(); } public static void transientExample() { Traffic traf = new Traffic(); traf.setLogId(1); traf.setLogName("xiva" + 1); traf.setLogTime("20120514" + 1); FileOutputStream f; FileInputStream fi; ObjectOutputStream s; try { f = new FileOutputStream("E:\\tmp.txt"); s = new ObjectOutputStream(f); s.writeObject(traf); s.flush(); } catch (IOException ex) { Logger.getLogger(ReverseString.class.getName()).log(Level.SEVERE, null, ex); } try { fi= new FileInputStream("E:\\tmp.txt"); ObjectInputStream oi = new ObjectInputStream(fi); Traffic traf01 = (Traffic)oi.readObject(); System.out.print(traf01.getLogId() + ":" + traf01.getLogName() + ":" + traf01.getLogTime()); } catch (Exception ex) { Logger.getLogger(ReverseString.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String[] args){ // String reString = reverseStr("ABCDEFG"); // int firNum = 7; // int reNum = firNum >> 1; // System.out.println(reNum); // System.out.println(reString); transientExample(); } }
运行结果为:1:xiva1:null
从运行结果可以看出:
使用了transient属性的对象不能被反序列化的,也可以这样说,一个对象的属性被声明为transient,则在持久化的过程中会被忽略。
当某些属性我们需要用到,但没必要持久化的时候,我们可以加上关键词transient。
相关推荐
### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列...同时,理解`transient`与`volatile`之间的区别也是处理复杂Java应用中的多线程和序列化问题的关键。
- `transient`关键字不能应用于静态变量,因为静态变量属于类而非对象,它们在类加载时就存在,不参与序列化过程。 - 如果一个类的所有实例字段都是`transient`的,那么这个类就没有必要实现`Serializable`接口,...
Java transient关键字原理解析 Java 中的 transient 关键字是一个重要的概念,它被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 序列化是对象进行持久化处理,也...
深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...
在Java编程语言中,`transient`关键字与对象的序列化(serialization)机制密切相关,它在处理对象状态的持久化时扮演着关键角色。本文将深入探讨`transient`关键字的功能、用途以及它如何影响Java对象的序列化过程。 ...
**transient关键字的作用** `transient`关键字用于标记一个实例变量,表示这个变量不应该作为对象状态的一部分进行序列化。当一个对象被序列化时,`transient`修饰的变量会被忽略,它们的值不会包含在序列化的表示中...
1. `transient`关键字只能应用于实例变量,不能应用于静态变量,因为静态变量属于类,而不是特定的实例。 2. `transient`变量在序列化和反序列化过程中不会被持久化,因此它们的值在反序列化后将丢失。 3. 当一个类...
下面将详细介绍这48个Java关键字,它们是构成Java程序的基础,掌握这些关键字对于理解和编写Java代码至关重要。 ### 1. abstract `abstract`关键字用于声明抽象类或抽象方法。抽象类不能实例化,主要用于提供子类...
在深入探讨Java的关键字与保留字之前,我们首先需明确两个概念:关键字和保留字。...掌握这些关键字和保留字是Java编程的基础,能够帮助程序员更准确地理解和应用语言特性,从而编写出更加高效、健壮的代码。
内容概要:本文详细解析了 Java 开发中常见的面试题,涵盖了 static 关键字、transient 和 volatile 关键字以及 synchronized 的原理和应用。针对每个关键字,文章不仅介绍了其基本概念,还通过具体代码示例进行了...
Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。...通过深入学习和实践,开发者能够更好地理解和利用Java的关键字来构建复杂的应用程序。
以上仅是Java关键字的一部分,还有许多其他关键字,如`synchronized`, `volatile`, `transient`, `native`, `strictfp`等,它们各自承担着特定的功能。理解和熟练使用这些关键字是成为一名合格的Java程序员的基础。...
- 其他关键字:如void、static、final、abstract、native、transient、volatile等,各有特定用途。 2. Java关键字应用示例: - `public class HelloWorld {` 这行代码定义了一个公共类HelloWorld,可供其他类访问...
### JAVA中的保留关键字 在Java编程语言中,关键字与保留关键字是极其重要的组成部分,它们定义了语言的基本结构和语法规则。...希望本文能够帮助您更好地理解Java中的关键字和保留关键字,并在日常开发中加以应用。
"Java关键字与标识符小结" Java语言中,关键字和标识符是两个重要的概念。关键字是被Java语言赋予了特殊含义的单词,总共有50个。...它们是Java语言的基础知识,理解和应用它们可以帮助我们更好地编程。
首先,我们来深入理解Java中的关键字。Java的关键字主要包括`abstract`, `assert`, `boolean`, `break`, `byte`, `case`, `catch`, `char`, `class`, `const`, `continue`, `default`, `do`, `double`, `else`, `...
本文将详细介绍Java中的50个关键字,通过具体的例子帮助读者更好地理解和应用这些关键字。 #### A系列关键字 - **abstract**:此关键字用于声明抽象类和抽象方法。抽象类不能被实例化,主要用于被继承;抽象方法则...
Java关键字和命名规范是Java编程语言中的基础概念,它们...遵循Java命名规范不仅可以使代码易于阅读和理解,而且有助于团队协作和代码维护。在实际开发中,合理地应用这些规范对于编写出高质量的Java程序是非常重要的。
本资料整理了Java中的常用关键字,旨在帮助初学者更好地理解和记忆,从而提升编程效率。 1. **访问控制关键字**: - `public`:公共的,任何类都能访问。 - `private`:私有的,只能在定义它的类内部访问。 - `...