final可以修饰类、方法、成员变量和变量
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖
final修饰成员变量,必须初始化,要么显式初始化,要么在构造方法中为其赋值。
final修饰变量,只能赋值一次,即为常量。
注意:
1、final修饰的变量是基本类型以及String类型时,编译器会把它当做常量,且不可变。
public class Test {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
System.out.println(e);
}
}
当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。
2、引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。