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

java四个关键字:transient, strictfp, volatile, final

    博客分类:
  • java
阅读更多

http://hi.baidu.com/dabo12/blog/item/550b9ab71cdb76f630add161.html

 

 

一:transient

使用对象:属性

字段不是对象持久状态的一部分,不应该把字段和对象一起串起。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。当串行化某个对象时,如果该对象的某个变量是transient,那么这个变量不会被串行化进去。也就是说,假设某个类的成员变量是transient,那么当通过ObjectOutputStream把这个类的某个实例保存到磁盘上时,实际上transient变量的值是不会保存的。

二: 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的。

三: volatile

使用对象:属性

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

可以代替synchronized。

四:final

对与java中的final变量,java编译器是进行了优化的。每个使用了final类型变量的地方都不会通过连接而进行访问。比如说Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到Test类的指令码或者常量池中。这样,每次Test类用到fNumber的时候,不会通过引用连接到Data类中进行读取,而是直接使用自己保存在类文件中的副本。

  用程序说话:

C:/>javac Test.javaTest.java:
public class Test{
 public static void main(String[] args){
  System.out.println(Data.fNumber);
 }
}

Data.java:

public class Data{
 public static final int fNumber=77;
}

 

分享到:
评论

相关推荐

    Java标识符、关键字和保留字

    - 修饰方法、类、属性和变量关键字:如`static`、`final`、`native`、`synchronized`、`transient`、`volatile`、`strictfp`,用于提供额外的信息来修饰类、方法和变量。 - 异常处理关键字:如`try`、`catch`、`...

    Java的关键字与标识符小结

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

    java中的关键字大全

    ### Java中的关键字大全 在Java编程语言中,关键字是一组预定义的词汇,它们具有特殊的含义和用途。理解和掌握这些关键字对于编写有效的Java程序至关重要。本文将详细介绍Java中的一些核心关键字,并提供相应的解释...

    java51个关键字详解

    Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...

    java 关键字查询文档

    Java 共有 50 多个关键字,它们包括但不限于 `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`(虽然未使用)、`continue`、`default`、`do`、`double`、`else`、`...

    Java的关键字与保留字

    Java拥有51个关键字,这些关键字在编程中扮演着核心角色,用于声明类型、控制流程、异常处理等。下面我们将逐一介绍这些关键字: 1. **abstract**:用于定义抽象类和抽象方法,表示该类不能被实例化,或方法没有...

    java编程全部关键字解释

    这只是Java关键字的一部分,还有许多其他关键字,如 `float`, `for`, `if`, `import`, `instanceof`, `new`, `package`, `return`, `static`, `strictfp`, `super`, `this`, `throw`, `throws`, `transient`, `try`,...

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

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

    java关键字.pdf

    Java关键字是Java语言中预先定义的、具有特殊意义的单词,它们在Java程序中有着特殊的用途,比如用来声明数据类型、定义流程控制语句等。根据提供的部分内容,可以将Java的关键字分类并阐述它们的作用。 1. 访问...

    java保留字、关键字

    在Java编程语言中,保留字(Reserved Words)和关键字(Keywords)是两个非常重要的概念,它们构成了Java语法的基础。保留字是Java语言已经预定义并赋予特定含义的词汇,而关键字则是Java语法结构中不可或缺的部分。...

    java关键字和java命名规范.pdf

    16. final: 表示最终的,可以用来修饰类、方法和变量,表示它们不能被继承或修改。 17. finally: 与try-catch结构一起使用,无论是否捕获到异常,finally块中的代码总是会被执行。 18. float: 基本数据类型,表示单...

    java关键字

    ### Java关键字详解 ...每个关键字都有其特定的用途和规则。通过深入理解这些关键字的功能,开发者能够更高效地编写清晰、简洁且易于维护的代码。希望本文的介绍能帮助读者更好地理解和运用Java的关键字。

    java关键字、保留字

    ### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为...每个关键字都有其特定的用途和语法规则,熟悉它们可以帮助开发者更好地控制程序的行为和逻辑结构。

    01-Java语言基础(关键字)

    以上仅是Java关键字的一部分,还有许多其他关键字,如`synchronized`, `volatile`, `transient`, `native`, `strictfp`等,它们各自承担着特定的功能。理解和熟练使用这些关键字是成为一名合格的Java程序员的基础。...

    java中“53”个关键字(含2个保留字)

    在Java中,一共有53个关键字,包括两个保留字。下面将详细阐述这些关键字的功能和用途。 1. `abstract` - 用于声明抽象类或抽象方法,表示类不提供具体实现。 2. `assert` - 用于断言某个条件为真,通常用于测试和...

    JAVA关键字

    16. **enum**:Java 5引入,用于声明枚举类型。 17. **extends**:表示类的继承关系。 18. **final**:可以修饰类、方法和变量,表示不可改变或最终的。 19. **finally**:在try-catch-finally结构中,无论是否...

    java关键字源码-KeyWordsCount:CCP作业:编写一个程序来计算Java文本源代码文件中关键字的出现次数。计算文件中每个关键字的

    4. **变量与常量**:`final`, `static`, `void`, `volatile`, `transient` 5. **流程控制**:`if`, `else`, `for`, `while`, `do`, `switch`, `case`, `break`, `continue`, `return` 6. **异常处理**:`try`, `...

    Java关键字

    在Java中,一共有51个关键字(包括保留字),但描述中提到的是48个,可能是因为某些关键字在特定上下文不常用或者被归类到保留字中。下面将详细介绍这些关键字及其用途。 1. **abstract** - 用于声明抽象类或抽象...

    JAVA中的关键字和保留字.doc

    1. `abstract`: 这个关键字用于声明抽象类。抽象类不能被实例化,但可以被其他类继承。它可以包含抽象方法,这些方法没有具体实现,必须由其子类提供。 2. `assert`: 用于在程序中插入断言,用于测试假设条件是否为...

    Java关键字大全 Java关键字大全

    `package`, `private`, `protected`, `public`, `return`, `short`, `static`, `strictfp`, `super`, `switch`, `synchronized`, `this`, `throw`, `throws`, `transient`, `try`, `void`, `volatile`, `while` 等...

Global site tag (gtag.js) - Google Analytics