转自:http://chenyijun0727.spaces.live.com/blog/cns!B3B027BE2AA0A3A7!155.entry
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
使用对象:字段
介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。
Keys:instanceof
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:
public class Bill {//省略细节}
public class PhoneBill extends Bill {//省略细节}
public class GasBill extends Bill {//省略细节}
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//计算电话账单
}
if (bill instanceof GasBill) {
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//计算电话账单
}
public double calculate(GasBill bill) {
//计算燃气账单
}
所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
分享到:
相关推荐
Java中有许多关键字,包括但不限于`class`、`interface`、`extends`、`implements`、`public`、`private`、`protected`、`static`、`final`、`void`、`int`、`float`、`double`、`boolean`等。这些关键字定义了Java...
常用的 Java 关键字包括: * 访问修饰符:public、private、protected * 非访问修饰符:static、final、abstract、 synchronized * 数据类型:int、double、char、boolean 等 * 流程控制:if、else、switch、while...
以下是一些Java关键字的详细说明: 1. `abstract`:`abstract`关键字用于声明抽象类和抽象方法。抽象类不能被实例化,而是作为其他类的基类,提供基本结构和接口。抽象方法没有具体的实现,必须在子类中被重写。...
在学习Java编程的过程中,了解和掌握关键字及其对应的英文单词至关重要,因为它们构成了Java语言的基础。以下是对这些知识点的详细说明: 1. **JDK (Java Development Kit)**:这是开发Java应用程序所需的一整套...
### Java关键字的用法 Java作为一种广泛使用的编程语言,拥有丰富的关键字来支持其核心功能与特性。本文将详细介绍部分重要的Java关键字及其用法。 #### 1. `abstract` `abstract`关键字用于定义抽象类或抽象方法...
内容概要:本文详细解析了 Java 开发中常见的面试题,涵盖了 static 关键字、transient 和 volatile 关键字以及 synchronized 的原理和应用。针对每个关键字,文章不仅介绍了其基本概念,还通过具体代码示例进行了...
本文将详细介绍 RobotFramework Selenium2Library 中的一些常用关键字及其使用方法。 #### 二、关键字详解 ##### 1. **CheckboxShouldNotBeSelected** **用途**:验证指定位置的复选框是否未被选中。 **参数**: -...
### Java常用Lib库说明 #### Proxool连接池 在Java开发中,数据库连接池是一项重要的技术,它能够显著提高应用程序处理数据库请求的性能。在众多数据库连接池中,Proxool因其稳定性与高效性而备受青睐。Proxool是...
在IT行业中,搜索引擎优化...以上是关于“关键字获得url百度排名(Java)”这一主题的详细说明,涵盖了从网络请求到数据处理和存储等多个方面。在实际项目中,可能还需要考虑到性能优化、用户体验以及合规性等因素。
标题所指的知识点主要集中在Java编程语言中常见的英语词汇,这包括Java中的关键字、程序设计概念以及一些特定的术语。描述强调了这是一份全面的词汇汇总,对学习者具有较高的参考价值,可以作为学习Java时的单词本...
在Java编程语言中,`this`关键字是一个非常重要的概念,它在日常开发中扮演着不可或缺的角色。本练习31着重于理解和运用`this`关键字。`this`关键字主要有以下几个方面的应用: 1. **引用当前对象的属性:** 当类中...
Java编程语言在笔试题目中经常会涉及许多核心概念和特性,以下是对这些知识点的详细说明: 1. **访问修饰符的区别**: - `public`:任何地方都可以访问。 - `private`:只能在同一个类中访问。 - `protected`:...
以上就是根据所提供的文件内容整理出来的Java常用英语单词及其含义。这些词汇构成了Java编程语言的基础,并且对于理解和编写Java程序至关重要。掌握这些词汇能够帮助开发者更深入地理解Java语言的核心概念和技术。
在Java编程语言中,移动文件是一项常见的操作,特别是在处理文件系统任务时。本文将深入探讨如何使用Java API来实现移动指定目录下的文件。我们将主要关注`java.io`和`java.nio`包中的类和方法,它们提供了文件操作...
3. 注释、关键字与标识符:解释程序中注释的作用、Java的关键字有哪些,以及如何合理使用标识符。 4. 数据类型:涵盖Java中的基本数据类型(如int、char等),以及引用数据类型,例如类的定义和使用。 5. 运算符:...
内容概要:java八股文,本文全面介绍了Java面试中常见的基础和技术要点,涵盖Java基础知识、面向对象特性、关键字、集合框架、多线程、异常处理、JVM内存结构和垃圾回收机制、IO流等多个方面的内容。每部分内容均...
Java和Android面试题涵盖了许多核心概念,以下是这些知识点的详细说明: 1. **面向对象** (Object-Oriented Analysis and Design Principle, OOADP): 面向对象编程是Java和Android开发的基础,它涉及类、对象、继承...
抽象类通过关键字abstract声明,不能被实例化,只能被继承。Java中的抽象类和接口可以提供多态性(polymorphism)。 9. Java内存模型:Java的内存模型分为堆(heap)和栈(stack)。栈用于存储局部变量和方法调用,...
本文将深入探讨Java基础陷阱、Java客户端陷阱以及Java服务器陷阱,并提供一些常见的面试题,帮助你更好地理解和应对这些问题。 一、Java基础陷阱 1. 内存管理:Java使用垃圾回收机制管理内存,但过度依赖可能导致...