APP下载

基于简单实例的final关键字深入剖析

2018-06-04

(长沙学院计算机工程与应用数学学院 湖南长沙 410075)

引言

final修饰的类、变量和方法具有以下特性:

1. final修饰的类不能被继承。

2. final修饰的方法不能被子类重写。

3. final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。

一、final修饰基本数据类型与引用数据类型的区别

修饰变量是final用得最多的地方,数据类型有基本数据类型与引用数据类型,当final修饰基本数据类型时,被修饰的数据就相当于我们自己直接定义的常量,理解与应用与一致,但当修饰引用数据类型变量时,会有所不同,这是本文接下来要重点阐述的内容。首先了解一下final变量的基本语法:对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 接下来举个例子深入分析final关键字修饰引用类型数据的性能:

上述代码运行结果为:

分析上述输出结果可知,就final修饰基本数据而言,我们会得出第一个输出结果应该也是false,因为final修饰变量时,就相当于常量。但输出结果却相反。实际第一个输出结果为true,而第二个结果为fasle。这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。因此在上面的一段代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b替换为它的值。……

登录APP查看全文