transient, volatile, strictfp
来源:互联网 发布:华三交换机进入端口 编辑:程序博客网 时间:2024/06/05 21:52
transient
1. 告诉java object serialization subsystem在序列化对象时,忽略该field。并且在反序列化的初始化中,使用default值而非原先序列化时的实际值,如果想恢复原先值,要靠代码来重新给它赋值。
2. 只能修饰class field,局部变量不能用;
3. 由于具体值不会被序列化,所以transient修饰的field的值不会被持久化
volatile
在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
stricfp
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
2. 错误的使用方法
一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
Java代码
- strictfp interface A {}
- public strictfp class FpDemo1 {
- strictfp void f() {}
- }
2. 错误的使用方法
Java代码
- interface A {
- strictfp void f();
- }
- public class FpDemo2 {
- strictfp FpDemo2() {}
- }
一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
References: JLS
http://docs.oracle.com/javase/specs/#8.3.1.4
- strictfp, volatile, transient关键词
- native, volatile, transient, strictfp
- transient,volatile和strictfp
- strictfp, volatile, transient关键词
- transient, volatile, strictfp
- Java 关键字:strictfp volatile transient
- transient、volatile、strictfp关键字是什么意思?
- transient,volatile和strictfp关键字
- java 关键字: volatile、strictfp、transient
- Java关键字之native,strictfp,transient,volatile
- Java关键字之native,strictfp,transient,volatile
- Java关键字之native,strictfp,transient,volatile
- Java关键字之native,strictfp,transient,volatile
- java keywords,native,strictfp,transient,volatile
- java四个关键字:transient, strictfp, volatile, final
- Java中的transient,volatile和strictfp关键字
- Java关键字之native,strictfp,transient,volatile
- Java中的transient,volatile和strictfp关键字
- SUSE更新iptable信息
- Linux下禁止root用户远程登录的方法
- Suse Linux 多次登录失败锁定用户及解锁
- Java反射效率
- java反射机制基础详解(转)
- transient, volatile, strictfp
- Difference between Serializable and Externalizable in Java Serialization
- C++箴言:绝不在构造或析构期调用虚函数
- Java多态特性
- web程序请求限制
- Collection类区别
- How to disable certain HTTP methods (PUT, DELETE, TRACE and OPTIONS) in JBOSS7
- POJ-2492-A Bug's Life
- 在eclipse上安装 Marketplace Client