final、finally与finalize的区别

本文详细解释了Java中final修饰符的作用,finally语句的执行机制,以及finalize()方法在垃圾回收过程中的角色。特别强调了finally块的执行规则和System.exit的影响。
摘要由CSDN通过智能技术生成

一、final(修饰符)

根据修饰的对象不同,有不同的效果。但其本质上表示一种最终状态,即一个不可改变的实体,只能被分配一次。

修饰对象效果
不能被继承,final类中的方法默认也是final
方法不能被重写,private类型的方法默认是final的
成员变量不能被重新赋值,即常量(必须在声明的同时赋值)

二、finally(总是执行)

一般作用在try-catch代码块中形成try-catch-finally代码块。finally代码块中放置一些必须执行的代码,即不论是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

但由于finally用法的特殊性,即使在try-catch代码块中执行了return语句,其会撤销之前的return语句,继续执行最后的finally代码块中的代码;

注意:如果在try语句块中执行了System.exit (0) 语句,即直接终止了Java虚拟机的运行,所以finally语句块不会执行

三、finalize()(一个GC方法)

finalize()是Java中的一个方法名,Java使用finalize()方法在垃圾收集器将该对象从内存中清除出去之前,做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没被引用时,才会对这个对象调用finalize()方法。

它是在顶级类Object中定义的,因此所有的类都继承了它,子类重写finalize()方法以整理系统资源或者执行其他清理工作。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值