在 Java 语言众多的关键字中,final 关键字无疑是被提到最多的,也是在面试过程中经常被问到的知识点。今天,老王查找了很多材料,最后终于收集了关于 final 关键字比较全的知识点。首先,final 关键字可以修饰的对象有三个:一是修饰变量、二是修饰方法、三是修饰类,下面我们来看经过 final 关键字修饰的这三种对象会有着怎样的不同。
1,final 关键字修饰变量 在使用 final 关键字修饰变量时,又可以分为两种情况:一种是基本数据类型的变量、另一种是引用类型的变量。final 关键字在修饰基本数据类型时必须对变量赋予初始值,因此,final 关键字也经常和 static 关键字一起用来声明常量值,final 正好限制了必须赋值、static 声明了静态变量。
修饰引用变量时,该引用变量如果已经被赋值则不可以再被赋值,否则也会出现不能被编译的情况。
2,final 关键字修饰方法 通过 final 关键字修饰的方法是不能被子类的方法重写的,相当于一个方法的功能已经被定了不能进行重写修改。一般情况下,如果一个方法的功能已经确定好不再改变了则可以使用 final 关键字修饰一下,因为 final 关键字修饰以后的方法是在程序编译的时候就被动态绑定了不用等到程序运行的时候被动态绑定,这样就大大的提高了执行的效率。
public final void method() {
System.out.println("it is final method");
}
3,final 关键字修饰类 被 final 关键字修饰的类一般叫 final 类,final 类是不能被继承的,这也就意味着 final 类的功能一般是比较完整的。因此,Jdk 中有很多类都是用 final 关键字进行修饰的,它们不需要被继承。其中,最常见的 String 类就是 fianl 关键字修饰的类,还有其他的装饰类等等。
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
}
public final class Integer extends Number implements Comparable<Integer> {
}
public final class Long extends Number implements Comparable<Long> {
}
以上包括其他的装饰器类都是被 final 关键字进行修饰的,它自身提供的方法和功能也是非常完备的。
4,static 关键字的不同 既然文章说明 final 关键字,难免会让人联想到 static 关键字的使用场景,毕竟,final static 成对出现的频率也是比较高的。使用 static 修饰的变量只会在类加载的时候被初始化不会因为对象的再次创建而改变。
更多精彩前往微信公众号【老王说编程】>>>
|