可能很多人对final的使用还停留在基本的理解:final修饰的类不能继承,final修饰的方法不能重写,final修饰的方法变量不能改变。但是后者不太好理解:如果引用被修改了,就说明引用是不可变的,引用指向的内容是可变的。JVM会尝试内联final修饰的方法来提高运行效率。final修饰的常量在编译时会被存放在常量池中。首先我们来了解一下最终修改的引用变量。下面我们来看一个例子:int[]a={1,2,3};a[0]=10;//允许a={2,3};//不允许。可见我们可以修改引用本身的内容,但是因为修改需要是另外一个对象,所以无法成功。用法:它的初始化可以在两个地方:(1)在它的定义处,也就是在定义final变量的时候直接给它赋值;(2)在施工方法上;当方法被final修改时。指示该方法不能被子类覆盖。final方法的一个优点是比非final方法更快,因为它在编译时已经静态绑定,不需要在执行时动态绑定。Usage:也表示这样的方法提供的功能已经满足了当前的要求,不需要扩展,任何继承自该类的类都不允许重写这个方法,但是继承仍然可以继承这个方法,即话说,可以直接用。
