Java中的transient,volatile和strictfp关键字

我不是女神ヾ 2022-04-14 05:48 310阅读 0赞

1、transient

  1. 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
  2. class T {
  3. transient int a; //不需要维持
  4. int b; //需要维持
  5. }
  6. 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存。

2、volatile

  1. Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

3、strictfp

  1. strictfp修饰类或方法,可以确保浮点运算(以及所有切断)正如早期的Java版本那样准确。切断只影响某些操作的指数。当一个类被strictfp修饰,所有的方法自动被strictfp修饰。
  2. strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp
  3. 你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:

合法的使用关键字strictfp

  1. strictfp interface A {}
  2. public strictfp class FpDemo1 {
  3. strictfp void f() {}
  4. }

发表评论

表情:
评论列表 (有 0 条评论,310人围观)

还没有评论,来说两句吧...

相关阅读

    相关 strictfp_Keyword

    strictfp 维基百科,自由的百科全书 strictfp是Java编程语言中的一个修饰符,它限制浮点计算以确保可移植性。strictfp命令是使用Java虚拟机(

    相关 strictfp关键字

    strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运