fina ,finally ,finalize之间的区别?

一,简单区别
final用于声明属性,方法和类,分别表示属性不可改变(常量),方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
二,中等区别
final:Java中的关键字,修饰符。
A). 如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被声明为abstract抽象类的和final的类。
B). 如果将变量或方法声明为final,可以保证它们在使用中不被改变。
1)被声明为final的变量必须在声明时给定初始值,而在以后的引用中只能读取,不可修改。
2)被声明final的方法只能使用,不能重载。
finally:Java的一种异常处理机制。
finally是对Java异常处理模型的最佳补充。finally结构使代码总会执行,而不管无异常发生。使用finally可以维护对象的内部状态,并可以清理非内存资源。特别实在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。
finalize:Java中的一个方法名
Java技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没被引用时对这个对象调用的。它是在Object类中定义的,因此所的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
3.详细区别

这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生兄弟,但是它们的含义和用法却是大相径庭。
**final关键字我们首先来说说final。**它可以用于以下四个地方:
1).定义变量,包括静态的和非静态的
2).定义方法的参数
3).定义方法
4).定义类
第一种情况:
如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量;
如果final修饰的是一个对象,就表示这个变量被赋予的引用时不可变的。
这里需要提醒大家注意的是,不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象。
第二种情况: final的含义与第一种情况相同。
实际上对于前两种情况,一种更贴切的表述final的含义的描述,那就是,如果一个变量或方法参数被final修饰,就表示它只能被赋值一次,但是Java虚拟机为变量设定的默认值不记作一次赋值。被final修饰的变量必须被初始化。初始化的方式有以下几种:
1.在定义的时候初始化。
2.final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。
3.静态final变量可以在定义时初始化,也可以在静态初始化块中初始化,不可以在初始化块中初始化。
4.final变量还可以在类的构造器中初始化,但是静态final变量不可以。

*重点讲finalize,因为他比较深奥,而且可能是我们看不到的东西儿

finalize() 是Java中的一个方法,它是 Object 类中定义的一个方法。当一个对象变为垃圾时(即不再被引用),垃圾回收器会在回收该对象之前调用 finalize() 方法。
finalize() 方法的主要作用是在对象被销毁之前执行一些清理操作。这个方法可以被子类重写,以便在对象被回收之前进行特定的资源释放或清理操作,例如关闭文件、释放网络连接、释放系统资源等。
然而,需要注意的是,在现代的Java开发中,并不推荐使用 finalize() 方法来进行资源的释放。因为 finalize() 方法的调用时机是不确定的,不能保证它会在对象变为垃圾时立即被调用。垃圾回收器的工作过程是由JVM自动管理和控制的,不同的垃圾回收算法和GC实现可能导致 finalize() 方法的执行时间不确定。
相反,更好的做法是显式地在代码中通过 try-finally 或 try-with-resources 块来确保及时地释放和关闭资源。这样可以更可靠地管理资源,避免资源泄漏和不确定性。
简而言之,finalize() 方法是Java提供的一个机制,用于在对象被回收之前执行特定的清理操作。但由于其不确定的调用时机以及现代Java提供的更可靠的资源管理方式,使用 finalize() 方法来进行资源释放并不是一个推荐的做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值