final、finally和finalize有什么区别?

前言

finalfinallyfinalize是Java中用于异常处理的关键字。每个关键字都有不同的功能。final, finallyfinalize的基本区别在于,final是一个访问修饰符,finallyException Handling中的块,finalize是对象类的方法。

与此同时,final, finallyfinalize之间也有很多区别。下面列出了finalfinallyfinalize之间的区别:

说明finalfinallyfinalize
定义Final是关键字和访问修饰符,用于对类、方法或变量施加限制finally 是Java异常处理中的块,用于执行重要的代码,无论异常是否发生finalize是Java中的一个方法,用于在对象被垃圾回收之前执行清理处理
适用Final关键字用于类、方法和变量Finally块总是与异常处理中的try and catch块相关Finalize()方法与对象一起使用
功能(1)一旦声明,最终变量就变成常量,不能修改。(2) final方法不能被子类重写。(3) final类不能继承。(1)最后一个块运行重要的代码,不管是否发生异常。(2)最后块清理所有在try块使用的资源Finalize方法在对象销毁之前对其执行清理操作
执行只有在调用Final方法时才会执行Finally块在try-catch块执行时立即执行。它的执行不依赖于异常。Finalize方法在对象销毁之前执行

1. final 例子

让我们考虑下面的例子,其中我们声明最终变量age。一旦声明,就不能修改;

public class FinalExampleTest {  
    //declaring final variable  
    final int age = 18;  
    void display() {  
      
    // reassigning value to age variable   
    // gives compile time error  
    age = 55;  
    }  
      
    public static void main(String[] args) {  
      
    FinalExampleTest obj = new FinalExampleTest();  
    // gives compile time error  
    obj.display();  
    }  
} 

结果:

在这里插入图片描述

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

2. finally 例子

让我们看看下面的示例,其中Java代码抛出一个异常,catch块处理该异常。稍后,在try-catch块之后执行finally块。此外,代码的其余部分也会正常执行;

FinallyExample.java

public class FinallyExample {    
      public static void main(String args[]){   
      try {    
        System.out.println("Inside try block");  
      // below code throws divide by zero exception  
       int data=25/0;    
       System.out.println(data);    
      }   
      // handles the Arithmetic Exception / Divide by zero exception  
      catch (ArithmeticException e){  
        System.out.println("Exception handled");  
        System.out.println(e);  
      }   
      // executes regardless of exception occurred or not   
      finally {  
        System.out.println("finally block is always executed");  
      }    
      System.out.println("rest of the code...");    
      }    
    }    

结果:
在这里插入图片描述

3. finalize 例子

FinalizeExample.java

public class FinalizeExample {    
     public static void main(String[] args)     
    {     
        FinalizeExample obj = new FinalizeExample();        
        // printing the hashcode   
        System.out.println("Hashcode is: " + obj.hashCode());           
        obj = null;    
        // calling the garbage collector using gc()   
        System.gc();     
        System.out.println("End of the garbage collection");     
    }     
   // defining the finalize method   
    protected void finalize()     
    {     
        System.out.println("Called the finalize() method");     
    }     
}  

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DT从零到壹

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值