【Java面试题系列第一篇】
transient:
用transient声明的变量不需要维持,主要是用于序列化的时候不被存储的;
volatile:
volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized方法时。
strictfp:
用strictfp修饰类、接口或方法,用于精确的浮点运算;关键字范围内所有浮点运算完全依照浮点规范IEEE-754来执行;当一个类被strictfp修饰时,所有方法自动被strictfp修饰;
可以将一个类、接口或方法声明为strictfp,但是不允许把接口中的方法以及类中的构造函数声明为strictfp,例:
1 //正确的使用方法 2 strictfp interface A {} 3 public strictfp class FpDemo1 { 4 strictfp void f() {} 5 } 6 7 // 错误的使用方法 8 interface A { 9 strictfp void f(); 10 } 11 public class FpDemo2 { 12 strictfp FpDemo2() {} 13 }