Java中final、finally和finalize的区别

Java中final、finally和finalize的区别

1,关键字解读

1.1 final

final:修饰符,用于修饰属性、方法和类。

​ 修饰属性:表示属性是不可变的,是一个常量。

​ 修饰方法:表示方法不可被重写(覆盖)。

​ 修饰类:表示类没有后代,也就是常说的太监类,不可以被继承。

1.2 finally

finally:是异常处理的一部分,finally中的代码无论发生异常与否,都必须会执行。

1.3 finalize

finalize:是Object类的一个方法。当垃圾收集器进行资源回收时,会调用对象的此方法来进行垃圾回收、资源释放。

2,final、finally和finalize的区别

虽然这三个字都是Java中的关键字,但是在本质上是没有任何联系的,只是长的比较像罢了。

final:Java中的修饰符。

1,如果一个类被final修饰,则不能被继承,无法派生新的子类。所以,也就意味着,一个类不能同时被finalabstract 修饰。

2,如果变量被 final 修饰,可以保证变量在以后的使用中不被修改。被 final 修饰的变量,必须在声明时赋初值,在以后的引用中只能读取,不能修改。

3,被 final 修饰的方法,则意味着这个方法可以使用,但是不能被重写。

finally:表示一种异常处理机制。

finally是对Java异常处理模型的最佳补充。finally 结构使代码总会执行,而不管无异常发生。使用finally可以维护对象的内部状态,并可以清理非内存资源。

一般在关闭数据库连接方面,都会把响应的代码放入 finally 块中。

finalize:Java中Object类的一个方法名。

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

因为该方法是在Object类中定义的,因此所有的类都继承了该方法。子类可以覆盖该方法来整理系统资源或者执行其他的清理工作。

3,小结

本篇文章简单介绍了Java中final、finally和finalize的区别,由于纯手打,难免会有纰漏,如果发现错误的地方,请第一时间告诉我,这将是我进步的一个很重要的环节。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: final 是一个修饰符,能够用于类、变量和方法,表示它们不能被修改或重写。finally是一个关键字,它在异常处理语句使用,表示肯定会被执行的代码。finalize是一个Object类的方法,在垃圾收集器准备回收对象时会调用该方法,用于清理资源。 ### 回答2: 在Javafinalfinallyfinalize是三个不同的关键字,具有不同的用途和含义。 1. finalfinal是一个修饰符,用于声明一个不能被继承的类、一个不能被重写的方法、或者一个不能被修改的变量。当一个类被声明为final时,该类不能被其他类继承。当一个方法被声明为final时,该方法不能被子类重写。当一个变量被声明为final时,该变量的值不能被修改。 2. finallyfinally是一个关键字,用于定义在try-catch语句块的一个代码块,无论是否发生异常,该代码块都会被执行。finally块通常用于释放资源,比如关闭文件、网络连接等。 3. finalizefinalize是一个方法,用于在Java对象被垃圾回收器销毁之前进行一些清理工作。finalize方法的定义在Object类,可以被子类重写。finalize方法在垃圾回收器准备销毁对象时会被调用,但并不能保证一定会执行,因为垃圾回收是由垃圾回收器自行决定的。 总结: final用于修饰类、方法或变量,表示不可继承、重写或修改。finally用于定义在try-catch语句块的一个代码块,无论是否发生异常,都会执行。finalize是一个方法,在Java对象被销毁之前执行一些清理工作,但不能保证一定会被执行。 ### 回答3: 在Javafinalfinallyfinalize是三个不同的概念。 1. finalfinal是一个关键字,可以修饰变量、方法和类。当用final修饰变量时,表示该变量的值不可被更改。当用final修饰方法时,表示该方法不可被子类重写。当用final修饰类时,表示该类不可被继承。final主要用于限定对象的状态、行为或结构的不可改变性。 2. finallyfinally也是一个关键字,用于定义在try-catch结构的一个代码块。无论try块是否发生异常,finally的代码都会被执行。通常用finally来释放资源、关闭文件、数据库连接等必要的清理操作。 3. finalizefinalize()是一个方法名,属于Object类的一个方法,用于Java的垃圾回收机制。当一个对象变成垃圾,即没有任何引用指向该对象时,垃圾回收器会在适当的时机调用该对象的finalize()方法,进行资源释放和清理操作。但是,由于finalize()方法的执行时机不确定,并且Java8已经不鼓励使用finalize()方法,因此一般不建议使用该方法。 总结:final表示不可改变性,finally表示无论是否发生异常都会执行的代码块,而finalize是垃圾回收器在释放对象时调用的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值