final可以修饰类、方法、成员变量
-
当final修饰类的时候,说明该类不能被继承
-
当final修饰方法的时候,说明该方法不能被重写
-
在早期,可能使用final修饰的方法,编译器针对这些方法的所有调用都转成内嵌调用,这样提高效率(但到现在一般我们不会去管这事了,编译器和JVM都越来越聪明了)
-
-
当final修饰成员变量时,有两种情况:
-
如果修饰的是基本类型,说明这个变量的所代表数值永不能变(不能重新赋值)!
-
如果修饰的是引用类型,该变量所的引用不能变,但引用所代表的对象内容是可变的!
-
值得一说的是:并不是被final修饰的成员变量就一定是编译期常量了。比如说我们可以写出这样的代码:
private final int chang = new Randon().nextInt(20);