1、public static final String STRING = "Hello World!";
修饰类成员变量,该变量在此处赋值后,不允许后面再对该值进行修改,这也就是通常所说的常量。声明常量时必须初始化!
2、public final String str = "Hello World";
修饰对象成员变量,赋值后不可更改。与修饰类成员变量不同的是,声明时不一定非要初始化,详见第 3 点。
3、public final String str;
修饰对象成员变量,但却没有明确使用赋值运算符(=)进行初始化时,表示延迟该对象成员的初始化到构造函数中,在构造函数中必须对该对象成员指定值,进行初始化,不可再延迟。
4、public final class Name{ }
修饰类,表示这个类是最后一个类,不会再有子类,也就是不能再被继承(extends)。例如 java.lang.String
5、public final void finalMethod(){ } 或者 public static final void staticMethod(){ }
修饰方法(类方法、对象方法),表示这是最后一次定义该方法了,也就是说,子类不可以重新定义final方法。例如 java.lang.Object 就有几个 final 方法。