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. 错误的使用方法
Java代码
interface A {
相关文档:
现在自学Java中,结合网上搜索、书上描写及自己的理解,对接口有一些理解,希望与大家分享一下。
接口是不同类的相同方法的集合,不过它只给出了方法的定义,并没有给出具体的实现。
就像一群杀手,有人叫他去杀一个人,他们有相同的行为——杀死目标,这就像接口,不同的杀手会用不同的手段,这如方法的具体实 ......
import java.io.File;
import java.util.Date;
import java.util.Iterator;
import java.util.Vector;
import java.text.SimpleDateFormat;
public class FileViewer {
File myDir;
File[] contents;
Vector vectorList;
Iterator currentFileView;
File currentFile;
  ......
创建一个JFrame
下面用简单的实例演示了Java Swing创建一个能输入内容的窗口
public class frameTest(){
public static void Main(String args[]){
//创建JFrame对象,JFrame用来在屏幕上显示一个Windows窗口。
JFrame frame = new JFrame("第一个JFrame"); &nbs ......
可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。
在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身。养成好的代码编写习惯 ......