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方法要快,由于在编译时已经静态绑定了,不须要在执行时在动态绑定。

使用情况:
那么也表示这样的方法提供的功能已经满足当前要求,不需要再进行扩展了,并且也不允许任何从这个类继承的类来重写这种方法,但是继承依旧能够继承这个方法,也就是表示能够直接使用。

你可能感兴趣的:(java)