21xrx.com
2025-04-18 18:36:28 Friday
文章检索 我的文章 写文章
Java中final、finally和finalize的区别
2023-06-15 12:20:43 深夜i     16     0
Java final finally finalize

Java中final、finally和finalize的区别,含有代码案例

Java作为一门类C语言的高级编程语言,在语法上有一些特殊的关键词,常常会在实际开发中造成混淆。其中最容易被混淆的就是final、finally和finalize,它们的语法和用法都不尽相同。本文将分别介绍这三个关键词,并用代码案例进行演示,以便更好地理解它们的区别。

一、final

final是Java中的一个关键词,它用来修饰类、方法和变量。final修饰类时,表示该类不能被继承;final修饰方法时,表示该方法不能被重写;final修饰变量时,表示该变量只能被赋值一次。

下面是一个final变量的示例代码:

public class FinalDemo {
  public static void main(String[] args) {
    final int num = 10;
    //num = 20; //错误,无法再次赋值
    System.out.println(num);
  }
}

二、finally

finally也是Java中的一个关键词,它用在try-catch语句中的finally块中。无论try块中是否抛出异常,finally块中的代码都会被执行。通常在finally块中释放资源或者进行一些清理工作。

下面是一个finally的示例代码:

import java.io.*;
public class FinallyDemo {
  public static void main(String[] args) {
    File file = new File("test.txt");
    BufferedReader br = null;
    try {
      br = new BufferedReader(new FileReader(file));
      String line = null;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        if (br != null) {
          br.close();
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

三、finalize

finalize是Java中的一个方法,它是Object类的一个方法,被所有对象继承。finalize方法在对象被垃圾回收器回收之前被调用,用来进行资源的清理和释放。如果一个类覆盖了finalize方法,那么在该类的对象被回收时,finalize方法就会被自动调用。

下面是一个finalize方法的示例代码:

public class FinalizeDemo {
  public static void main(String[] args) {
    Person p = new Person();
    p = null; //使对象变为垃圾,便于演示finalize方法
    System.gc(); //显式调用垃圾回收器
  }
}
class Person {
  String name;
  int age;
  protected void finalize() throws Throwable {
    System.out.println("对象被回收了");
  }
}

通过以上代码案例,我们可以很容易地理解final、finally和finalize之间的区别。

  
  

评论区

请求出错了