Java中的transient,volatile和strictfp关键字
Java
中的transient,volatile和strictfp关键字
如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
Java
代码
class
T {
transient
int
a;
//不需要维持
int
b;
//需要维持
}
class T {
transient int a; //不需要维持
int b; //需要维持
}
这里,如果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
代码
strictfp
interface
A {}
public
strictfp
class
FpDemo1 {
strictfp
void
f() {}
}
strictfp interface A {}
public strictfp class FpDemo1 {
strictfp void f() {}
}
2. 错误的使用方法
Jav
相关文档:
package CH1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class exercise001 extends JApplet {
// 定义变量
private JColorChooser chooser = new JColorChooser();
private JButton button = new JButton("Show Color Chooser");
private JDialog dialo ......
JAVA在线api
2009年06月07日 17:06
1.Hibernate API Documentation (3.2.2.ga)
http://www.hibernate.org/hib_docs/v3/api/
2.Spring Framework API 2.5
http://static.springframework.org/spring/docs/2.5.x/api/index.html
3.Struts 1.3.8 API
http://struts.apache.org/1.3.8/apidocs/index.html
4.Struts 2 Co ......
呵呵。。
import java.io.*;
class Exec{
public static void main(String []args)throws IOException{
//Linux系统命令:ls -l
String command = "ls -l";
//获取当前系统的环境。
Runtime rt = Runtime.getRuntime();
......
Java杂谈(六)
这篇是笔者打算写的J2se部分的最后一篇了,这篇结束之后,再写J2ee部分,不知道是否还合适写在这个版块?大家可以给点意见,谢谢大家对小弟这么鼓励一路写完前六篇Java杂谈的J2se部分。最后这篇打算谈一谈Java中的RMI机制和JVM沙箱安全框架。&nbs ......
1java中排序算法的回调
编写通用的排序代码时,面临的一个问题就是必须根据对象的实际类型来执行比较运算,从而实现正确的运算。程序设计的主要目标就是“将发生变化的东西与保持不变的东西分开” ,在这里保持不变的部分就是程序算法,而每次使用时都要变化的是对象的实际比较算法。所以我们采用回调,将 ......