native
native 关键字可以应用于方法,以指示该方法是用 Java 以外的语言实现的。
strictfp
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令人满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果想让浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字
synchronized
synchronized 关键字可以应用于方法或语句块,使得该代码块一次只能被一个线程执行。
如果应用于静态方法,那么,当该方法一次由一个线程执行时,整个类将被锁定。
如果应用于实例方法,那么,当该方法一次由一个线程访问时,该实例将被锁定。
如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。
transient
transient 关键字可以应用于类的成员变量,使得当该类的实例被序列化时,该变量不被序列化。
volatile
volatile 关键字用于表示可以被多个线程异步修改的成员变量。
volatile是一种轻量级的同步机制,它主要有两个特性:一是保证共享变量对所有线程的可见性;二是禁止指令重排序优化。
throw 和 throws
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws主要是声明这个方法可能会抛出这种类型的异常,使它的调用者知道要捕获这个异常。