查看原文
其他

Java教程-final, finally和finalize的区别

点击关注👉 鸭哥聊Java 2023-09-01

整理:Java面试那些事儿


final、finally和finalize是Java中用于异常处理的关键字。每个关键字都有不同的功能。final是一个访问修饰符,finally是异常处理中的代码块,而finalize是Object类的方法。


除此之外,final、finally和finalize之间还存在许多区别。下面是final、finally和finalize之间的区别列表:


Sr. no.Keyfinalfinallyfinalize
1.定义final 是关键字和访问修饰符,用于对类、方法或变量应用限制。finally 是Java Exception Handling 中的块,无论异常发生与否,都执行重要的代码。finalize 是 Java 中的方法,用于在对象被垃圾回收之前执行清理处理。
2.适用于final 关键字与类、方法和变量一起使用。Finally 块总是与异常处理中的 try 和 catch 块相关。finalize() 方法与对象一起使用。
3.功能性(1) 一旦声明,final 变量就变成常量,不能修改。(2)final方法不能被子类重写。(3)final类不能被继承。(1) finally 块运行重要的代码,无论是否发生异常。(2)finally块清理try块中使用的所有资源finalize 方法在对象销毁之前对对象执行清理活动。
4.执行Final 方法仅在我们调用它时执行。finally 块在执行 try-catch 块后立即执行。finalize 方法在对象被销毁之前执行。


专属福利

👉点击领取:651页Java面试题库


Java final示例

考虑以下示例,我们声明了一个final变量age。一旦声明,它就不能被修改。


FinalExampleTest.java

public class FinalExampleTest { //声明最终变量 final int age = 18; void display() { // 重新赋值给年龄变量 // 给出编译时错误 age = 55; } public static void main(String[] args) { FinalExampleTest obj = new FinalExampleTest(); // 给出编译时错误 obj.display(); } }


输出:


在上面的示例中,我们声明了一个final变量。同样,我们可以使用final关键字声明方法和类。


Java finally示例


看下面的示例,Java代码引发异常,catch块处理该异常。然后,在try-catch块之后执行finally块。接下来,剩余的代码也会正常执行。


FinallyExample.java

public class FinallyExample { public static void main(String args[]){ try { System.out.println("Inside try block"); // 下面的代码抛出被零除异常 int data=25/0; System.out.println(data); } // 处理算术异常/除以零异常 catch (ArithmeticException e){ System.out.println("Exception handled"); System.out.println(e); } //无论是否发生异常都执行 finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }

输出:



Java finalize示例


FinalizeExample.java

public class FinalizeExample { public static void main(String[] args) { FinalizeExample obj = new FinalizeExample(); // 打印哈希码 System.out.println("Hashcode is: " + obj.hashCode()); obj = null; // 使用 gc() 调用垃圾收集器 System.gc(); System.out.println("End of the garbage collection"); } // 定义finalize方法 protected void finalize() { System.out.println("Called the finalize() method"); } }


输出:



程序员技术交流群
扫码进群记得备注:城市+昵称+技术方向
▲长按扫描
最近技术热文

我就知道你会点赞+“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存