文档章节

Java中的transient,volatile和strictfp关键字

xiahuawuyu
 xiahuawuyu
发布于 2012/05/17 15:23
字数 734
阅读 99
收藏 1
Java中的transient,volatile和strictfp关键字 
    如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如: 
Java代码    收藏代码
  1. class T {  
  2.    transient int a;  //不需要维持  
  3.    int b;  //需要维持  
  4. }  

    这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存。 
    volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized方法时。 
    用strictfp修饰类或方法,可以确保浮点运算(以及所有切断)正如早期的Java版本那样准确。切断只影响某些操作的指数。当一个类被strictfp修饰,所有的方法自动被strictfp修饰。 
    strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。 
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码: 

1. 合法的使用关键字strictfp 
Java代码    收藏代码
  1. strictfp interface A {}  
  2.   
  3. public strictfp class FpDemo1 {  
  4.     strictfp void f() {}  
  5. }  

2. 错误的使用方法 
Java代码    收藏代码
  1. interface A {  
  2.     strictfp void f();  
  3. }  
  4.   
  5. public class FpDemo2 {  
  6.     strictfp FpDemo2() {}  
  7. }  

一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。 



Keys: volatile 
使用对象:字段 
介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。volatile有时 
可以代替synchronized。 

Keys:transient 

  使用对象:字段 

  介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。 

© 著作权归作者所有

上一篇: JAVA-文件类
xiahuawuyu
粉丝 104
博文 648
码字总数 713300
作品 0
浦东
技术主管
私信 提问
Java学习资料-标识符、关键字

1、标识符 (1)Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则。 (2)Java标识符命名规则: 标识符由字母、下划...

晓阳
2015/01/05
198
0
Java中的transient,volatile和strictfp,instanceof

不妨看看这三个词的汉语翻译:transient:短暂的;volatile:不稳定的;strictfp: FP-strict,也就是说精确浮点的意思。 下面是网上的一些解释: 1,如果用transient声明一个实例变量,当对象存...

twins
2012/05/20
133
0
Java 修饰符顺序

The Java Language Specification recommends listing modifiers in the following order: Annotations public protected private abstract static final transient volatile synchronized n......

Solid
2016/03/31
1
0
Learn Java - Chapter 1 变量(Variables)-基本类型

java语言定义的变量包含一下四种类型 实例变量(Instance Variables),非静态变量,在Class中声明的field,未使用static声明; 类变量(Class Variables ),静态变量,在Class中使用stati...

Hassan
2015/06/01
135
0
java关键字strictfp的用途

strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素...

风一样
2012/10/25
47
0

没有更多内容

加载失败,请刷新页面

加载更多

spring boot actuator

actuator 是监控系统健康的工具,引入 spring-boot-starter-actuator会暴露一些endpoint. 可通过如下配置来配置这些endpoint的基本配置: 可通过http:${url}:28081/management/actuator/*来访...

ZH-JSON
27分钟前
5
0
9.特殊权限 软连接 硬链接

6月7日任务 2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件 2.18 特殊权限set_uid 会发现有些文件的前三位并不是rwx而是rws,而s就代表...

oschina130111
38分钟前
3
0
好程序员web前端分享如何自学前端?步骤是什么?

好程序员web前端分享如何自学前端?步骤是什么?简单粗暴直接上学习流程。 1、学习HTML+CSS基础 HTML5新特性和CSS3 这个部分主要是需要记忆的知识点比较多,建议大家在学习的时候多加练习,最...

好程序员官方
39分钟前
4
0
创龙基于TI TMS320C6748定点/浮点DSP C674x + Xilinx Spartan-6 FPGA开发板

TL6748F-EVM是一款基于广州创龙SOM-TL6748F核心板设计的开发板,底板采用沉金无铅工艺2层板设计,它为用户提供了SOM-TL6748F核心板的测试平台,用于快速评估SOM-TL6748F核心板的整体性能。 ...

Tronlong创龙
45分钟前
3
0
8年前诞生于淘宝,细数阿里云RPA 的前世今生

9月10日,踏入55岁的马云正式卸任阿里巴巴董事局主席一职,由阿里巴巴集团CEO张勇接任。公寓创业、西湖论剑、美国敲钟,从成立到登顶中国最值钱的公司,阿里巴巴只用了20年。 阿里云RPA,201...

阿里云官方博客
49分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部