乐趣区

关于java:终于讲清楚了深入理解Java-应用程序中-final-关键字的各种使用场景

在 Java 语言泛滥的关键字中,final 关键字无疑是被提到最多的,也是在面试过程中常常被问到的知识点。明天,老王查找了很多资料,最初终于收集了对于 final 关键字比拟全的知识点。首先,final 关键字能够润饰的对象有三个:一是润饰变量、二是润饰办法、三是润饰类,上面咱们来看通过 final 关键字润饰的这三种对象会有着怎么的不同。

1,final 关键字润饰变量

在应用 final 关键字润饰变量时,又能够分为两种状况:一种是根本数据类型的变量、另一种是援用类型的变量。final 关键字在润饰根本数据类型时必须对变量赋予初始值,因而,final 关键字也常常和 static 关键字一起用来申明常量值,final 正好限度了必须赋值、static 申明了动态变量。

// 定义常量
final static String str = "老王说编程";

润饰援用变量时,该援用变量如果曾经被赋值则不能够再被赋值,否则也会呈现不能被编译的状况。

// 定义一个 Main 对象并且实例化
final Main main = new Main();
// 被 final 关键字润饰后,再次对 Main 对象进行赋值时就会呈现谬误
main = new Main();

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 润饰的变量只会在类加载的时候被初始化不会因为对象的再次创立而扭转。

// 在类中定义一个变量 num 接管随机数,因为只有类对象加载的时候 num 值才会初始化,// 因而,在之后 num 的值都是不会扭转的
static double num = Math.random();

更多精彩返回微信公众号【老王说编程】>>>

退出移动版