Java中final、finally和finalize方法的区别

本文对比了Java中的final、finally和Finalize,解释了final用于常量和不可重写,finally用于异常处理确保资源清理,而finalize是对象清理的最后机会但不保证调用。
摘要由CSDN通过智能技术生成

        简而言之,final关键字可以与变量、方法和类一起使用,并且对它们都有不同的含义。finally是另一个 Java 关键字,与try catch throw 和 throws一起用于异常处理Finalize()是 Java 中的一个特殊方法,垃圾收集器在回收符合 GC 条件的对象之前会调用该方法

在这篇 Java 问题文章中,我们将比较Final、finally 和 Finalize ,并重点介绍Java 中的Final 、finally和Finalize方法之间的一些重要区别 。

Java 中的final、finally、finalize

1、final关键字可以与Java 中的变量、方法和类一起使用。如果你将一个变量设置为final ,你就不能改变它的值,它就像一个常量。Final变量在创建时初始化,但空白 Final 变量在构造函数中初始化的情况除外。如果在 Java 中将方法设为 Final,则无法在子类中 重写它。如果将一个类设为最终类,则意味着它不能被子类化。使一个类自动使其所有方法成为final,有时出于安全原因需要这样做,这就是为什么String在Java中是final的原因之一。 简而言之,final 与finally或finalize关键字完全无关。Final 关键字还有助于编写 Immutable 类,这对于设计线程安全的多线程系统和减少同步量至关重要。

2、现在让我们看看Java 中的finally 是什么?正如所说,finally与try和catch一起用于异常处理。根据Java编程语言的规则,对于异常处理,至少需要catch或finally块。最后,该块比 catch 有一个特殊的优点,即无论是否抛出异常, 它都保证被执行。这使得它成为关闭系统资源(如InputStream或OutputStream )的理想位置 ,这是释放稀缺文件描述符所必需的。在finally 块中关闭流、网络连接、数据库连接是Java 中良好的编码实践。 顺便说一句,从 Java 7 开始,可以使用带有资源块的 try来自动关闭资源。由于finally在大多数情况下都保证被执行,因此它也产生了一些棘手的Java问题,其中finally不执行,例如从finally块返回值,从try块调用System.exit等。finally块总是执行,除了如果 JVM 死掉,即调用System.exit() 。 
 
同样,finally 与Final或Finalize没有任何关系。
3、现在让我们看看什么是finalize()方法,finalize()是由垃圾收集线程在收集符合条件的对象之前调用的。这是对象执行任何清理的最后机会,但由于不能保证是否会调用 Finalize(),因此在调用 Finalize 之前保留资源是不好的做法。 
概况
所以,final 、finally和finalize都是不同的关键字,它们用于不同的目的。它们之间唯一的相似之处是它们都是Java编程语言关键字,除了final 、finalize和finally之外,它们是完全不同的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值