java不常用
strictfp 关键字
可能很多人都没有用过这个关键字,如果很多人用那标题也显得没什么意义了。
首先看两段很简单的代码:
public static void main(String[] args){
double w = 7*8/3;
System.out.println(w);
}
public static strictfp void main(String[] args){
double w = 7*8/3;
System.out.println(w);
}
运行结果都是 18.0;
从这里的结果看没什么差别,只是代码中加了关键字strictfp。如果你只在本机上做测试得到结果永远都是一样的,
下面我来详细的介绍一下,呵呵,参考书藉:
1.strictfp: strict float point 精确浮点,使用了strictfp关键字就必须使用严格的浮点计算。
2.详解:
可移植是java语言的设计目标之一。无论在哪个虚拟机上运行,同一个运算应该得到同样的结果。对于浮点数的算术运算,实现这样的可移植性是相当困难的。
double类型使用64位存储一个double数值,而有些处理器使用80位浮点寄存器。这些寄存器增加了中间计算精度。例如,下列运算:double w = x * y / z;
很多Intel处理计算x * y,并且将结果存储在80位的寄存器中,再除以z并将结果截断为64位。这样可以得到一个更加精确的计算结果,并且还能够避免产生指数溢出。
但是,这个结果可能与始终在64位机器上计算的结果不一样。因此,Java虚拟机的最初规范规定所有的中间计算都必须截断。这种行为遭到了数值计算团体的反对。截断
计算不仅可能导致溢出,而且由于截断操作需要消耗时间,所以在计算上还比精确计算慢。为此,java程度设计语言承认最优性能与理想结果之间存在冲突,并给予了改进。
在默认情况下,虚拟机设计都允许将中间计算结果采用扩展的精度。但是,对于使用strictfp关键字标记的方法必须严格的浮点计算来产生理想的结果。例如,可以把main
方法标记为:
public static strictfp void main(String[] args)
于是,在main方法中的所有指令都将使用严格的浮点计算。如果将一个类标记为strictfp,这个类中的所有方法都要使用严格的浮点计算。
实际计算方式将取决于Intel处理器。在默认情况下,中间结果允许使用扩展的指数,但不允许使用扩展的尾数(Intel芯片在截断尾数并不损失性能)。因此,这两种方式的
区别仅仅在于采用默认的方式不会产生溢出,而采用严格的计算有可能产生溢出。
对不是很了解的也没什么关系,对于大多数据程来说,浮点溢出不属于大问题。
相关文档:
jdk1.4引入了Preferences API,它比对象序列化更接近于持久化,因为它可以自动存取和读取信息。Preferences类似于键值对,存取在一个节点层析结构中,不过它只能存取原始数据类型和字符串,每个字符串的长度不能超过8k。
import java.util.prefs.Preferences;
public class PreferencesDemo {
public static ......
1)正常情况下我们可以通过类实例化一个对象,那么通过反射实际上就可以通过一个对象得到此类完整的包.类名称
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
......
Java编程那些事儿
作者:陈跃峰、李中彬、谷骁勇
图书详细信息:
ISBN:9787302214052
定价:39元
印次:1-1
装帧:平装
印刷日期:2009-12-30
图书简介:
本书以通俗易懂的语言和代码示例介绍Java语言编程的各种知识,是一本指导初学者进行自学编程,并通过相关章节附带的练习融会贯通相关技术的入门书籍。 ......
1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行。
进入安装目录
#cd /home
#cp jdk-1_5_0_02-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
#./jdk-1_5_0_02-lin ......
一、JSP_选择题
1. 以下选项中不是jsp隐式对象的是:( )
A pageContext
B context
C application
D out
参考答案:B
2. 下面哪一个不是JSP本身已加载的基本类?( )
A java.lang.*
B java.io.*
C javax.servlet.*
D javax.servlet.j ......