final、finally、finalize作用和区别

final在Java中用于修饰变量、方法和类,确保变量不变、方法不被重写、类不被继承。它还能防止指令重排序,确保多线程环境下的安全性。finally常用于try-catch结构中,保证代码块总会执行,常用于资源释放。而finalize是对象被回收时调用的方法,但由于调用时机不确定,使用较少。
摘要由CSDN通过智能技术生成

final作用:

1、final修饰的变量不可以第二次赋值

2、final修饰的方法不可以被重写

3、final修饰的类不可以被继承

4、final可以防止指令重排序(指令重排序:预想的执行顺序和程序运行的顺序不一致,提高程序的灵活性这是在单线程,多线程下变量多了,可能会相互影响),保障多线程下的可见性。

final最好修饰基本类型数据或者本地内存地址不可变类型数据:

如下图,用final来修饰数组b时,整体将b重新赋值不可以,但是如图将数组内部小模块修改是可以的,而final修饰变量目的是为零让其值不在发生变化,所以一般不修饰复杂类型。

final、finally、finalize区别:

  • final 修饰变量、方法、类,修饰变量时表示变量是一个常量,不能再被赋值;修饰方法时表示方法不能被重写;修饰类时表示类不能被继承。

final也可以防止指令重排序,保证多线程下的安全性。

  • finally 用在try-catch(保证线程不会被中断)语句中,finally后面跟着的代码块表示无论是否抛出异常,改代码块一定会被执行。一般用于需要释放资源的情况(资源一定会关闭,避免堆积)。

  • finalize 是Object类的方法,每一个对象都有这么个方法,在该对象被回收的时候被调用,因为无法确定该方法什么时候被调用,所以很少使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值