`
iaiai
  • 浏览: 2196099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

strictfp, volatile, transient关键词

    博客分类:
  • J2EE
 
阅读更多
Key: strictfp

使用对象:类、方法

自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下。

strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。

你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:

1. 合法的使用关键字strictfp

strictfp interface A {}

public strictfp class FpDemo1 {
    strictfp void f() {}
}

2. 错误的使用方法

interface A {
    strictfp void f();
}

public class FpDemo2 {
    strictfp FpDemo2() {}
}

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



Keys: volatile

使用对象:字段

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

可以代替synchronized。



Keys:transient

  使用对象:字段

  介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
分享到:
评论

相关推荐

    java面试100题

    Java 中的关键字有 native、strictfp、transient 和 volatile 等。 1. native 修饰符,表示方法是由另外一种语言(如 c/c++,FORTRAN,汇编)实现的本地方法。 2. strictfp 修饰符,表示类或方法遵守 IEEE-754 规范...

    JAVA笔试总结 -- 非常全面

    native,transient,volatile,strictfp,CMM,synchronized,java socket,压缩与解压缩,多线程,垃圾回收算法,JVM ClassLoader,IO流,反射机制,JNDI, GUI布局管理器,JMS, Java Mail, JNDI reference,java事件处理...

    java面试题大全

    1. **关键字 transient 和 volatile**: - `transient` 是Java的关键字,用于标记字段,表明该字段的值不会在序列化过程中被持久化。这意味着当对象被序列化后,被`transient`修饰的变量将不会包含在序列化的表示中...

    50个关键字_3个直接量_JAVA的五十个关键词_.zip.zip

    49. `volatile` - 用于共享变量,保证多线程环境下的可见性和一致性。 50. `while` - 循环控制结构。 接下来,我们关注Java中的3个基本直接量类型: 1. **数值直接量**:这些是直接表示数值的常量,包括整型(如...

    java修饰词的总结.doc

    Java 语言中有多种修饰词,总共定义了 11 种,包括 public、protected、private、abstract、static、final、native、strictfp、synchronized、volatile 和 transient。这些修饰词可以应用于类、接口、成员、方法、...

    Java面试宝典2015

    transient与volatile关键字的理解 - **transient**:此关键字用于标记一个对象中的字段,在序列化时该字段会被忽略,即不会被持久化到磁盘或网络传输中。例如,在一个类`T`中,如果`a`字段被声明为`transient`,则...

    java学习_java语法基础

    浮点数计算的精度问题可以通过使用strictfp关键字来控制,它确保浮点计算遵循FP-strict规则,保证跨平台的数值一致性。另一方面,transient关键字用于标记一个成员变量,表示该变量不应被序列化,即不会被保存在持久...

    JAVA常见面试题及解答

    1. **`transient` 和 `volatile` 关键字**: - `transient` 关键字用于标记一个实例变量,表明该变量在序列化时不应被持久化。这意味着当对象被序列化并存储到持久化存储中时,`transient`修饰的变量不会被保存,而...

    修饰符

    在编程语言中,修饰符是用于定义类、接口、变量和方法等元素特性的关键词或标识符。在Java中,修饰符起着至关重要的作用,它们帮助开发者控制代码的访问级别、实现多态性以及规范类和方法的行为。本文将深入探讨Java...

    Java编程中常用修饰词使用方法

    介绍:strictfp 修饰的类中所有的方法都隐藏了 strictfp 修饰词,方法执行的所有浮点计算遵守 IEEE 754 标准,所有取值包括中间的结果都必须表示为 float 或 double 类型,而不能利用由本地平台浮点格式或硬件提供的...

    JAVA学习笔记.pdf

    其中,修饰符可以是static、final、transient、volatile等,类型是变量的数据类型,变量名是变量的名称,初始值是变量的默认值。 成员变量的修饰符有四种:static、final、transient、volatile。static表示成员变量...

    Java的关键字与标识符小结

    9. 其他关键字:包括native、strictfp、transient、volatile、assert、goto、const和enum等8个关键字。 标识符是用户在编程时给类、变量、常量、方法(函数)、语句块等起的名字。Java语言中标识符不包括关键字,而...

    java修饰词

    - `strictfp`修饰符确保浮点计算遵循IEEE 754标准,避免因平台差异导致的精度问题。 - 适用于需要严格一致性的科学计算场景。 9. **synchronized**: - `synchronized`用于方法或代码块,用于控制多线程环境中的...

    50个关键字_3个直接量_JAVA的五十个关键词_

    46. `transient`:非持久化修饰符,忽略变量在序列化过程中的存储。 47. `try`:异常处理的开始,包含可能会抛出异常的代码。 48. `void`:声明无返回值的方法。 49. `volatile`:确保多线程环境下变量的可见性和...

    Java入门——Java修饰词总结

    它确保了线程间的可见性和有序性,即任何线程对`volatile`字段的修改对其他线程立即可见,且不会发生指令重排序。 11. **transient**: - 使用对象:字段 - 介绍:`transient`修饰符用于指定在序列化过程中不应被...

    java修饰符介绍

    在Java编程语言中,修饰符是用来限制或指定代码元素(如类、方法、变量)的访问权限、特性或行为的关键词。以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public*...

    Java基础标识符关键字数据类型PPT教案学习.pptx

    private、public、protected、final、static、abstract、synchronized、volatile、strictfp、native、transient 等修饰符关键字;try、catch、finally、throw、throws 等异常处理关键字;new、extends、implements、...

    java关键字.pdf

    2. 类、方法和变量修饰符:abstract、final、static、transient、volatile - abstract表示抽象类或方法,抽象类不能实例化,抽象方法必须在子类中实现。 - final表示最终的,用于类表示不可继承,用于方法表示不可...

    99乘法表java源码-biji:课堂笔记

    byte extends int return transient case false interface short true catch final long static try char fianlly native strictfp void class float new super volatile continue for null switch while default if...

    Java语言程序设计(Java语法基础)ppt.ppt.ppt

    包括abstract、boolean、break、byte、case、catch、char、class、const、continue、default、do、double...strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile等52个关键字...

Global site tag (gtag.js) - Google Analytics