一:transient
使用对象:属性
字段不是对象持久状态的一局部,不应该把字段和对象一同串起。当一个对象被串行化的时分,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。当串行化某个对象时,假如该对象的某个变量是transient,那么这个变量不会被串行化进去。也就是说,假定某个类的成员变量是transient,那么当通过ObjectOutputStream把这个类的某个实例保管到磁盘上时,实践上 transient变量的值是不会保管的。
二: strictfp
使用对象:类、方法
自Java2以来,Java语言添加了一个关键字strictfp,虽然这个关键字在大少数场所比拟少用,但是还是有必要了解一下。
strictfp的意思是FP-strict,
聚利时旗舰店也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,假如没有指定strictfp关键字时, Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,致使于失掉的结果往往无法则你满意。而一旦使用了 strictfp来声明一个类、接口或许方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因而假如你想让你的浮点运算更加精确,而且不会由于不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
strictfpinterfaceA{} publicstrictfpclassFpDemo1{ strictfpvoidf(){} }
2. 错误的使用方法
interfaceA{ strictfpvoidf(); } publicclassFpDemo2{ strictfpFpDemo2(){} }
一旦使用了关键字strictfp来声明某个类、接口或许方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,契合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。