Java final、finally、finalize 有什么区别?

Java final、finally、finalize 有什么区别?

finalfinallyfinalize 是 Java 中三个完全不同的概念:

  1. final

    • final 是一个关键字,用于修饰类、方法、变量。
    • 当用于修饰类时,表示该类不能被继承。
    • 当用于修饰方法时,表示该方法不能被子类重写。
    • 当用于修饰变量时,表示该变量是一个常量,只能被赋值一次。
    java 复制代码
    public final class ExampleClass {
        final int constantValue = 42;
    
        final void exampleMethod() {
            // 该方法不能被子类重写
        }
    }
  2. finally

    • finally 是一个关键字,用于定义在异常处理结构中的代码块,无论是否发生异常都会被执行。
    • 通常与 try-catch 结构一起使用,用于确保资源得到释放或一些清理工作。
    java 复制代码
    try {
        // 一些可能抛出异常的代码
    } catch (Exception e) {
        // 异常处理代码
    } finally {
        // 无论是否发生异常都会执行的代码
        // 通常用于清理资源,例如关闭文件或网络连接
    }
  3. finalize

    • finalize 是一个方法,属于 Object 类,在 Java 中被用于垃圾回收(Garbage Collection)。
    • 在对象被垃圾收集器回收之前,finalize 方法会被调用,可以在此方法中进行一些资源释放或清理工作。
    • 注意,不建议过度依赖 finalize,因为它的执行时机和是否执行并不是完全可控的。
    java 复制代码
    public class ExampleClass {
        // 重写 finalize 方法
        @Override
        protected void finalize() throws Throwable {
            // 执行一些清理工作
            System.out.println("Object is being garbage collected");
        }
    }

请注意,finalize 方法在现代 Java 中不是首选的资源管理方式,而是使用 try-with-resources 或类似的机制来确保资源的正确释放。

相关推荐
论迹10 分钟前
【JavaEE】-- Cookie &&Session
java·java-ee
j_xxx404_27 分钟前
C++ STL:list|了解list|相关接口|相关操作
开发语言·c++
czhc114007566331 分钟前
Java114 LeeCode 翻转二叉树
java
一 乐32 分钟前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
盖世英雄酱581361 小时前
java深度调试技术【第四五章:多线程和幽灵代码】
java·后端
脏脏a1 小时前
类与对象(上):面向过程到面向对象的跨越,类的定义、封装与 this 指针等核心概念深度剖析
开发语言·c++
稚辉君.MCA_P8_Java1 小时前
深入理解 TCP;场景复现,掌握鲜为人知的细节
java·linux·网络·tcp/ip·kubernetes
熊猫比分站1 小时前
[特殊字符] Java/Vue 实现体育比分直播系统,支持多端实时更新
java·开发语言·vue.js
lang201509281 小时前
深入掌握 Maven Settings:从配置到实战
java·maven
scx_link2 小时前
修改JetBrains产品(IntelliJ IDEA 、PyCharm等软件)的默认插件和日志的存储位置
java·pycharm·intellij-idea