关于关键字transient的一二

简介: 关于关键字transient的一二

被transient关键字修饰的属性,在序列化对象的时候,不会序列化这个属性。

引入就是说,一个对象,某个有值得属性如果被transient修饰,那么这个对象在经过序列化和反序列化以后,该属性之前的值会消失掉,变成属性类型的默认值。


因为安全,一些对象属性不想被序列化到硬件中,就可以用transient修饰,使得该属性的生命周期仅仅存在内存中。


java的序列化有两种方式:

第一重就是实现Serializable接口,第二种就是实现Exteranlizable接口,需要重写writeExternal和readExternal方法,它的效率比Serializable高一些,并且可以决定哪些属性需要序列化(即使是transient修饰的),但是对大量对象,或者重复对象,则效率低。


如果是通过实现Exteranlizable接口来做序列话的时候,那么transient关键字就会失效,一个属性就算是被transient修饰那么在序列化和反序列化的时候也会被参入其中。


那么静态变量呢?被transient修饰的话,是否会参与序列化?

答案是不会,因为静态变量存放的位置是在方法区中,而序列化是序列化到硬盘上的,在取这个属性的时候,是从方发区去取的,而不是通过硬盘数据反序列化来获得,所以被transient修饰的静态变量不会参与序列化与反序列化。

目录
相关文章
|
6月前
|
存储 Java 中间件
《吊打面试官系列》从源码全面解析 ThreadLocal 关键字的来龙去脉
《吊打面试官系列》从源码全面解析 ThreadLocal 关键字的来龙去脉
|
5月前
|
缓存 安全 Java
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
32 0
|
2月前
|
存储 缓存 Java
volatile关键字最全原理剖析
【9月更文挑战第27天】`volatile` 是一个用于修饰变量的关键字,告知编译器被修饰的变量可能在程序控制流之外被改变。在多线程环境下,`volatile` 确保变量的值每次从内存中读取,保持最新状态,但不能解决所有同步问题。在硬件交互中,`volatile` 用于内存映射的 I/O 操作,确保读取最新值。不同编程语言如 C/C++ 和 Java 中的 `volatile` 用法略有差异,但都是处理易变变量的重要工具。
|
5月前
|
缓存 安全 Java
深入理解java中的volatile关键字
深入理解java中的volatile关键字
102 1
|
Java
关于关键字volatile的一二
关于关键字volatile的一二
79 0
|
存储 Java 数据安全/隐私保护
被遗忘的Java关键字:transient!
在 Java 中,transient 是一个关键字,用于指定一个类的字段在序列化时应该被忽略。transient 关键字只是暂时地在序列化过程中忽略了该字段,而不是永久性地从对象中删除该字段。
|
编译器
C零散知识点汇总之volatile关键字
C零散知识点汇总之volatile关键字
|
存储 缓存 Java
Java并发编程之Volatile关键字解析
在java的并发编程中我们经常会使用到Volatile关键字。而关于Volatile关键字的使用以及Volatile关键字的特性和实现原理也是在笔面试中经常会遇到的问题了。
112 0
Java并发编程之Volatile关键字解析
|
缓存 Java 编译器
Java并发编程学习笔记:volatile关键字解析
Java并发编程学习笔记:volatile关键字解析