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

        简而言之,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之外,它们是完全不同的。

你可能感兴趣的:(java,开发语言)