面试重点:final、finalize、finally 三者区别

面试题:请简述 final、finalize、finally 的区别

⭐ Java 基础高频面试重点

1. final

final 是修饰符 ,可以用来修饰变量、方法、类

  • 修饰变量:代表常量,仅允许赋值一次,赋值完成后不可修改。
  • 修饰方法 :该方法可以被子类继承使用,但不允许子类重写 (覆盖)。
  • 修饰类:该类不能被继承,没有子类。

代码示例

复制代码
// final修饰类:不能被继承
final class Person{
    // final修饰方法:不能被子类重写
    public final void say(){
        System.out.println("hello");
    }
}

public class Test {
    public static void main(String[] args) {
        // final修饰局部变量,只能赋值一次
        final int num = 10;
        // num = 20; 编译报错,不能修改
    }
}

2. finalize()

finalize() 是Object 类中的成员方法

  • 当对象即将被垃圾回收器回收时,JVM 会自动调用该方法。
  • 作用:对象被回收前,做资源清理操作。

⚠️注意:JDK9 之后该方法已经被标记废弃,不推荐开发使用,垃圾回收时机无法由程序员控制。

3. finally

finally 是异常处理的关键字

  • 作用:finally 代码块内的代码一定会执行(除 JVM 直接退出场景)。
  • 常用搭配结构:try{}catch{}finally{}、try{}finally{}
  • 开发场景:资源关闭,例如 IO 流、数据库连接等释放操作。

代码示例

复制代码
public class FinallyDemo {
    public static void main(String[] args) {
        try{
            System.out.println("try代码块");
            int a = 1 / 0;
        }catch (Exception e){
            System.out.println("捕获异常");
        }finally {
            System.out.println("finally代码块,用于关闭资源");
        }
    }
}

对比表格(面试背诵版)

表格

关键字 / 方法 类型 作用
final 修饰符 修饰变量 / 方法 / 类,表示不可变、不可重写、不可继承
finalize() Object 中的方法 对象垃圾回收前,JVM 自动调用,已废弃
finally 异常关键字 和 try-catch 搭配,存放必须执行的代码,常用于关闭资源
相关推荐
wuminyu2 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
蜗牛互联网4 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
龙亘川4 小时前
铭记英烈守初心,数字强基促服务:亘川智城退役军人服务系统的实践与价值
java·数据库·人工智能
OxYGC5 小时前
[AI工程] Spring AI 第廿一篇:存量 REST 接口的 MCP 化改造实录——工具从哪条路径注册、参数描述怎么写、身份怎么过去
java·人工智能·spring
Zhou1411365 小时前
SpringBoot_02_自动配置原理
java·spring boot·后端
FYKJ_20105 小时前
SSM校园失物招领系统41452-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·typescript·spark
kv1105 小时前
Android studio国内开发有关
java·数据库·android studio
卓怡学长6 小时前
w198基于springboot始于足下健康打卡平台的设计与实现
java·spring boot·spring·intellij-idea
阿狗童鞋6 小时前
Java并发编程实战指南
java·开发语言
Joe_Wang56 小时前
【从0到1学习JVM · 15】对象在堆里来回倒腾,究竟怎样才会进老年代?
java·jvm·学习·垃圾回收