3个不常用的java关键字transient、volatile、strictfp
(1) transient:
如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
class T
{
transient int a; //不需要维持
int b; //需要维持
} //这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存
(2) volatile:
volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized方法时。
(3) strictfp:
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明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的。
相关文档:
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
为了使操作系统支持Java,可由Sun公司的Java下载网页, 根据操作系统类型下载和安装一个免费JRE(Java Runtime Environment), 例如, JRE6。然后, 将本文件下载保存, 拷贝, 并粘贴到JRE所在的security目录, 例如, C:/Program Files/Java/jre6/lib/security/, 替换原有的文件java.policy, 设置JRE完成。
......
//1.创建testdll.java文件
public class testdll
{
static
{
System.loadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get() ......
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Test {
/**
* @作者QQ:351828554 2009/12/01 星期二
version:1.0
*/
public static void main(String[] args) {
new encry ......