java基础提高篇--final关键字

在程序设计中,我们希望我们设计的部分不能够改变,这时候就会用到final关键字,被final修饰的部分是不允许修改的部分,不想被修改的原因一般是效率和设计。数据、方法、类会使用到final关键字。

    一、数据

有时数据不能够改变是非常有用的,这样就可以减轻系统运行的负担,提高我们程序的运行效率。使用final修饰的数据我们称之为“常量”。常量主要应用在两个地方:

(1)、编译期的常量,永远不会被修改;

(2)、运行期的常量,希望初始化的时候不被修改。

对于编译期的常量,在类加载完,已经完成了初始化,我们不能再对其修改,它可以被运用到任何的计算式中。编译期的常量定义的数据类型只能是基本数据类型,必须在定义的时候被初始化。

有时,我们希望我们引用不同的对象,他所表现的内容不同,这个时候我们就用到了运行时的常量。运行时的常量使用的数据类型可以是基本数据类型,内容可以改变,也可以是引用类型,该引用指向的内存地址是不能改变的,可以改变的是这个引用所表现的内容。

例子:

  二、方法

如果一个方法使用了final关键词修饰,那么这个方法是不允许被继承和修改的,这样保证了方法的安全性。另一

个原因就是效率问题,java的早期实现中,如果将一个方法指明为final,就是同意编译器将针对该方法的所有调用都

转为内嵌调用。当编译器发现一个final方法调用命令时,它会根据自己的谨慎判断,跳过插入程序代码这种正常的调

用方式而执行方法调用机制(将参数压入栈,跳至方法代码处执行,然后跳回并清理栈中的参数,处理返回值),并

且以方法体中的实际代码的副本来代替方法调用。这将消除方法调用的开销。当然,如果一个方法很大,你的程序代

码会膨胀,因而可能看不到内嵌所带来的性能上的提高,因为所带来的性能会花费于方法内的时间量而被缩减。

父类中用final修饰的方法,子类是不允许进行修改的。

    三、类

如果一个类使用了final关键词进行修饰,那么这个类是不允许被继承和修改的,这个类的变量可以是final修饰也可以是普通变量,数据的final规则适用于这个类中使用final修饰的变量。这个类中的方法默认都是使用final来修饰的,从它不能被继承就可以看出。

    四、参数

在实际的应用中,final不仅可以修饰数据、方法和类,它同样可以修饰方法的参数,一旦修饰这个方法的参数就不能更改,就是说这个方法不能被重载,一旦参数改变,就会报错。

final修饰的参数在内部类也是非常有用的。在匿名内部类中,它的方法需要在内部类中使用,那么这个方法的参数必须使用fianl修饰。

    五、static和final

在实际运用中,我们常常会将static和final一起使用,修饰成员变量和成员方法,修饰的变量是一旦赋值是不可以更改的,成员方法是不可以被继承和修改的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值