final是关键字、finalize() 是方法、finally是用于try语句中的区块标志
一、final
1、修饰类:被修饰得类不能被继承
2、修饰方法:被修饰得方法不能被子类重写
3、修饰变量:
- 对于基本数据类型:被修饰的变量称之为常量,变量值在初始化赋值完成之后不能被改变
赋值方式:
① 可以定义变量时直接赋值
② 可以在代码块中进行赋值(静态代码块和构造代码块)
③ 可以再构造方法中进行赋值。
总结起来,就是要在对象创建之前完成赋值的过程。
- 对于引用类型:被final修饰的引用类型的变量(比如对象、String),一旦赋值了,那么他的地址也就确定下来了,不能再被修改了;但是它的内容可以被修改
二、finalize() 方法
1、概念
在Java中,finalize()
是一个方法,被定义在java.lang.Object
类中。用于在对象被laj之前进行特定的清除操作。
2、作用
- 清除资源:可以用
finalize()
方法释放对象所持有的一些资源,比如关闭文件、释放网络连接等。可以在对象被回收之前进行必要的资源清理,避免资源泄露。 - 执行未完成的操作:
finalize()
方法可以用于执行一些未完成的操作,例如取消未完成的任务或者回归事务。
3、注意事项
- 不建议过度依赖:因为垃圾回收的时间是不确定的,无法保证finalize()方法何时被调用。
- 执行代价高昂:由于finalize()方法的调用是由垃圾回收器负责的,并且可能会导致对象重新存活,所以它的执行会引入性能和内存开销。在现代的Java版本中,更推荐使用其他机制来进行资源清理,如使用try-with-resources语句块来自动关闭资源。
三、finally
try 关键字最后可以定义 finally 代码块。 finally 块中定义的代码,总是在 try 和任何 catch 块之后、方法完成之前运行。
正常情况下,不管是否抛出或捕获异常 finally 块都会执行。
四 throw 与 throws 区别
不同点:
一:位置不同。throws用在函数上,后边跟的是异常类,可以跟多个异常类。throw用在函数内,后面跟的是异常对象。
二:功能不同。
①throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先得处理方式。throw抛出具体的问题对象,执行到throw。功能就已经结束了跳转到调用者,并将具体的问题对象抛给调用者,也就是说throw语句独立存在时,下面不要定义其他语句,因为执行不到。②throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
相同点:
两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
标签:finalize,区别,final,finally,修饰,异常,throw,赋值 From: https://blog.csdn.net/2301_79814793/article/details/143060730