final, finally和finalize的区别

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 变量就变成常量,不能修改。<br/>(2)final方法不能被子类重写。<br/>(3)final类不能被继承。(1) finally 块运行重要的代码,无论是否发生异常。<br/>(2)finally块清理try块中使用的所有资源finalize 方法在对象销毁之前对对象执行清理活动。
4.执行Final 方法仅在我们调用它时执行。finally 块在执行 try-catch 块后立即执行。finalize 方法在对象被销毁之前执行。

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();  
    }  
}  

输出:

图1

在上面的示例中,我们声明了一个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...");    
      }    
    }    

输出:

图2

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");     
    }     
}    

输出:

图3

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想