21xrx.com
2024-09-17 04:23:01 Tuesday
登录
文章检索 我的文章 写文章
Java中final、finally和finalize的区别
2023-06-15 12:20:43 深夜i     --     --
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之间的区别。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复