程序员Java底层原理初探

02.Java关键字与底层原理-final关键字

2018-08-29  本文已影响201人  Next_吴思成

1. 含义

final关键字,实际的含义就一句话,不可改变。什么是不可改变?就是初始化完成之后就不能再做任何的修改,修饰成员变量的时候,成员变量变成一个常数;修饰方法的时候,方法不允许被重写;修饰类的时候,类不允许被继承;修饰参数列表的时候,入参的对象也是不可以改变。这个就是不可变,无论是引用新的对象,重写还是继承,都是改变的方法,而final就是把这个变更的路给堵死。

2. 用法与底层原理

2.1.final修饰成员变量

public final String finalVal = "finalVal";
finalVal = "changeValue";// 不允许,不能被修改

2.2.final修饰方法

public final void finalMethod() {
    System.out.println("finalMathod");
}
// 不允许,不能被重写
@Override
public void finalMehod() {}

2.3.final修饰参数列表

public void finalMethod2(final String name) {
    //name = "wusicheng";//error 不能修改
    System.out.println("hello " + name);
}

2.4.final修饰类

final class FinalClass {
}
// 不允许,不能被继承
class ChildClass extends FinalClass{}

3. 实际应用

一般使用都是用在定义常量,与static搭配进行使用。

4. 总结

  1. final关键字的精髓是不可变,不可变的常量、不能重写的方法、不能被继承的类、不能被修改的入参;
  2. final关键字修饰变量的时候,变量的地址不可变,但是变量地址的内容是可变的;
  3. Thinking in Java里面,描述使用final的两种情况是为了设计与效率,换言之就是为了保证这些东西不可变,同时将相关的变量放到常量池当中,相关的方法做内联的优化等等,由于这个实在是太底层了,在这里省略。

5.吐槽

我要填的坑那么的多。

https://www.jianshu.com/p/f1516e1217f1

上一篇下一篇

猜你喜欢

热点阅读