【JavaSE】final、finally、finalize的区别

本文详细解析了Java中final、finally与finalize的用法。final用于修饰类、变量及方法,确保不可变性与线程安全;finally是异常处理的一部分,确保资源释放;finalize是对象被垃圾回收前的最后机会。

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

final的用法

final可以用来修饰类或者变量或者方法

1)当一个类被final修饰的时候,表示该类不能被继承。类中的方法也默认为final;

2)当final修饰基本数据类型的变量时,表示该值在被初始化后不能更改;
当final修饰引用类型的变量时,表示该引用在初始化之后不能再指向其他的对象。
注意:final修饰的变量必须被初始化。可以在定义的时候初始化,也可以在构造函数中进行初始化。

3)当final修饰方法时,表示这个方法不能被子类重写。

使用final方法的原因有2个:

第一、把方法锁定,防止任何继承类修改它的实现。

第二、高效。当要使用一个被声明为final的方法时,直接将方法主体插入到调用处,而不进行方法调用,可以提高程序的执行效率(ps:如果过多的话,这样会造成代码膨胀)。

为什么String类要设计成final类型的?

Java中不仅String是final的,Long、Double、Integer之类的都是final的。

1)如果一个字符串不是不可变的,那么使用一个引用更改该字符串将导致对其他引用使用错误的vlaue

2)因为字符串是不可变的,所以它在创建的时候hashCode就被缓存了,不需要重新计算

3)线程安全

4)为了防止扩展类无意间破坏原来方法的实现。

 

finally的用法

finally是异常处理的一部分,只能用在try-catch语句中,表示这段代码一般情况下,一定会执行。经常用在需要释放资源的情况下。

finalize的用法

是一次线程的自我拯救,是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值