空白final final方法 final与private

本文深入探讨了Java中的final关键字,包括其在变量、方法和private修饰符中的应用。介绍了final变量的初始化规则,final方法的不可覆盖特性及其历史上的性能优化背景,以及final与private结合时的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓空白final就是指不初始化后续再对其进行赋值,但是这个操作只能进行一次,也就是不能二次赋值,因为final是不能改变的。

public class Test {
	private final int j;//空白final
	public Test()
	{
		j = 1;//对final进行初始化
	}
}
但是如果只有空白 final但是没有对其进行初始化的话会报 The blank final field j may not have been initialized

===========================================================================================================

final方法

使用final方法的原因有两个

1.把方法锁定,以防任何继承类修改它的含义,确保在继承中使方法行为保持不变,并且不会被覆盖。

2.以前是为了效率才使用final。在java早期,如果将方法指明为final,就是同意编译器将其转为内嵌调用。调用final命令时会和正常方式不一样,而是将参数压入栈,跳至方法代码处并执行,然后跳回并清理栈中内容,处理返回值。这样就消除了方法调用的开销,会提高效率,但是当放大很大是,程序代码就会膨胀,内嵌所带来的性能提高会因为花费于方法内的时间量而被缩减。  (这段书上是这么说,因为对底层实现不了解,所有也理解的不够透彻)

在最近的java版本中,已经不再需要final来进行优化了,有了新的技术来取代。在java SE5/6是,应该让编辑器自己去处理效率问题,只有在想要明确禁止覆盖时,才将方法设置为final

===========================================================================================================

final与private关键字

类中所欲的private方法都隐式地指定为是final的。由于无法取用private方法,所有也就无法覆盖它。可以对private方法添加final修饰词,但不会增加任何意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值