final关键字的使用详解

可能很多人对于final的使用都停留在八股文的基础理解:被final修饰的类不可以被继承,
被final修饰的方法不可以被重写,被final修饰的变量不可以被改变.
但是后面的却不是很理解:如果修饰引用,那么表示引用不可变,引用指向的内容可变.被final修饰的方法,JVM会尝试将其内联,以提高运行效率,被final修饰的常量,在编译阶段会存入常量池中。
首先我们来理解final修饰引用变量
这里我们来看一个例子:

int[] a = {1,2,3}; a[0]= 10; //是允许的 a = {2,3}; //是不允许的

可以看出来,我们对引用本身的内容是可以修改的,但是由于要对修改成为另外一个对象,那么就不能成功。
使用情况:其初始化可以在两个地方:
(1)其定义处,也就是说在final变量定义时直接给其赋值;
(2)构造方法中;
当一个方法被final修饰后。表示该方法不能被子类重写。final方法有一个优点是比非final方法要快,由于在编译时已经静态绑定了,不须要在执行时在动态绑定。
【final关键字的使用详解】使用情况:
那么也表示这样的方法提供的功能已经满足当前要求,不需要再进行扩展了,并且也不允许任何从这个类继承的类来重写这种方法,但是继承依旧能够继承这个方法,也就是表示能够直接使用。

    推荐阅读