AI 助理
备案 控制台
开发者社区 开发与运维 文章 正文

面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?

简介: 面试官:“小伙子,用过final关键字吗?”我:“必须用过呀”面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别”我:“好嘞!

写在开头

面试官:“小伙子,用过final关键字吗?”
我:“必须用过呀”
面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别”
我:“好嘞!”

final中文释义:最终的,最后的;在Java中作为关键字的一种,被用来修饰变量、方法、类,final 语义是不可改变的。

final修饰变量

当final修饰变量时有如下几点需要注意:

1、final 修饰表示常量、一旦创建不可改变;
2、final 修饰的局部变量必须在声明时给定初值;
3、final 修饰的成员变量必须在声明时给定初值或者在构造方法内设置初始值,只能读取,不可修改;
4、被 final 修饰的成员变量必须要初始化,赋初值后不能再重新赋值(可以调用对象方法修改属性值)。
   对基本类型来说是其值不可变;对引用变量来说其引用不可变,即不能再指向其他的对象;

【代码示例】

public class Test {
   
   
    private String name;
    public final int age = 18;
    //和static一同修饰时,被当做常量
    private static final int HIGH = 180;

    public String getName() {
   
   
        return name;
    }
    public void setName(String name) {
   
   
        this.name = name;
    }
    public int getWeight(){
   
   
        final int weight;
        //修饰局部变量时,不能再赋值,需要在声明时给定初始值!
        return weight;
    }
    public static void main(String[] args) {
   
   
       final Test test = new Test();
       // 给一个被final修饰的引用类型重新赋值,编译器会报错,提示取消final修饰
       //test = new Test();
        // 但给这个引用类型进行属性赋值是可以的!
        test.setName("JavaBuild");
        //final修饰的成员变量,给定初始值后不可再修改,但可以调用
        if(test.age == 18){
   
   
            System.out.println("永远18岁");
        }
    }
}

final修饰方法

当final修饰方法时需要注意:

1、final修饰的方法:只能使用,不能被子类重写,但能够类内重载;

【代码示例】

public class Test extends Animal{
   
   
    //方法的重写不被允许
    public void run(){
   
       
    }
}
class Animal {
   
   
    public final void run(){
   
   
        System.out.println("我会跑");
    }
    //方法的重载,被允许
    public final void run(String dog){
   
   
        System.out.println("我会跑");
    }
}

image.png

final修饰类

当final修饰方法时需要注意:

1final修饰的类不能被继承,没有子类;
2final 类中的方法默认是 final 的,比如String类;

【代码示例】

public class Test extends Animal{
   
   

}
 final class Animal {
   
   
    public final void run(){
   
   
        System.out.println("我会跑");
    }
}

image.png

final、finally、finalize()三者的区别?

final

见上文

finally

finally 异常处理的一部分,它只能用在 try/catch 语句中,表示希望 finally 语句块中的代码最后一定被执行(存在一些情况导致 finally 语句块不会被执行,如 jvm 结束)
不被执行的情况:

  • 直接返回未执行到 try-finally 语句块
  • 抛出异常未执行到 try-finally 语句块
  • 系统退出未执行到 finally 语句块

【代码示例】

public static String test() {
   
   
    String str = null;
    int i = 0;
    if (i == 0) {
   
   
        return str;//直接返回未执行到finally语句块
    }
    try {
   
   
        System.out.println("try...");
        return str;
    } finally {
   
   
        System.out.println("finally...");
    }
}

public static String test2() {
   
   
    String str = null;
    int i = 0;
    i = i / 0;//抛出异常未执行到finally语句块
    try {
   
   
        System.out.println("try...");
        return str;
    } finally {
   
   
        System.out.println("finally...");
    }
}

public static String test3() {
   
   
    String str = null;
    try {
   
   
        System.out.println("try...");
        System.exit(0);//系统退出未执行到finally语句块
        return str;
    } finally {
   
   
        System.out.println("finally...");
    }
}

finalize()

finalize() 是在 java.lang.Object 里定义的,Object 的 finalize() 方法什么都不做,对象被回收时 finalize() 方法会被调用。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要清理工作,在垃圾收集器删除对象之前被调用的。
一般情况下,此方法由JVM调用。特殊情况下,可重写 finalize() 方法,当对象被回收的时候释放一些资源,须调用 super.finalize() 。

JavaBuild
目录
相关文章
java冯坚持
|
4天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
java冯坚持
16 1
Java面试题之Java集合面试题 50道(带答案)
小强在此
|
7天前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
小强在此
16 5
java冯坚持
|
3天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
java冯坚持
16 0
Java面试题之cpu占用率100%,进行定位和解决
木子0204
|
7天前
|
存储 安全 Java
java基础面试题
java基础面试题
木子0204
15 2
木子0204
|
7天前
|
缓存 NoSQL Java
Java中redis面试题
Java中redis面试题
木子0204
22 1
喜欢猪猪
|
8天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
喜欢猪猪
27 2
万少!
|
4天前
|
前端开发 小程序 JavaScript
面试官:px、em、rem、vw、rpx 之间有什么区别?
面试官:px、em、rem、vw、rpx 之间有什么区别?
万少!
10 0
游客aqqrrgnlt26tg
|
10天前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
了解final关键字在Java并发编程领域的作用吗?
游客aqqrrgnlt26tg
13 0
椰椰椰耶
|
11天前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
椰椰椰耶
18 0
叫个什么名字
|
3天前
|
Java 调度 UED
深入理解Java中的多线程与并发机制
本文将详细探讨Java中多线程的概念、实现方式及并发机制,包括线程的生命周期、同步与锁机制以及高级并发工具。通过实例代码演示,帮助读者理解如何在Java中有效地处理多线程和并发问题,提高程序的性能和响应能力。
叫个什么名字
12 5

热门文章

最新文章

  • 1
    面试必问的4种单点登录的实现方式,你知道几个?
  • 2
    面试经历第1篇
  • 3
    【面试】腾讯 iOS 开发实习电话面试记录(二)
  • 4
    面试中的二叉树(附相关函数)
  • 5
    面试官给我挖坑:rm删除文件之后,空间就被释放了吗?
  • 6
    笔试题&面试题:找出一个数组中第m小的值并输出
  • 7
    node基础面试事件环?微任务、宏任务?一篇带你飞
  • 8
    Linux命令Top 100驱动人生! 面试必备
  • 9
    复习&面试 | Synchronized超详细读解
  • 10
    面试周连续剧之首战大捷
  • 1
    Java一分钟之运算符与表达式初探
    46
  • 2
    Java一分钟之Java数据类型概览:基本类型与引用类型
    41
  • 3
    Java一分钟之第一行Java代码:输出"Hello, World!"
    80
  • 4
    java一分钟之Java入门:认识JDK与JVM
    60
  • 5
    java服务报错 FileNotFoundException:打开的文件过多
    116
  • 6
    Java 泛型
    26
  • 7
    JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
    541
  • 8
    《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
    68
  • 9
    三个可能的Java面试题
    57
  • 10
    接口在增强Java代码的灵活性方面起着关键作用
    59
  • 相关课程

    更多
  • 「大师课」搞定 Java 开发基础
  • Java Spring Boot 2.6.0开发实战-1024程序员节创造营公益课
  • Java面试疑难点解析 - 面试技巧及语言基础
  • Java面试疑难点解析 - Java Web开发
  • Java面试疑难点解析 - 系统架构及项目设计
  • 相关电子书

    更多
  • 阿里云技术面试红宝书
  • 超全算法笔试-模拟题精解合集
  • 程序员面试宝典
  • 相关实验场景

    更多
  • 基于ECS搭建Java Web开发环境
  • 使用Aliyun Java Intializr进行项目开发
  • 搭建Java Web开发环境
  • 部署基于Dragonwell的Java运行环境
  • 阿里云平台上进行Java程序的编译与运行
  • 下一篇
    阿里云无影云电脑免费试用,最长可试用3个月

    玻璃钢生产厂家商场五一活动需要哪些美陈甘南景区玻璃钢雕塑哪家好河北常见商场美陈厂家直销景观玻璃钢仿铜雕塑南宁玻璃钢雕塑价格表玻璃钢雕塑凉亭庆阳仿真玻璃钢雕塑雕塑玻璃钢浮雕玻璃钢人物雕塑工艺品青海省玻璃钢雕塑哪家强玻璃钢花盆质量上乘景观玻璃钢雕塑大全芜湖抽象玻璃钢雕塑肇庆玻璃钢雕塑主题商场美陈如何做好一次营销活动铜陵玻璃钢雕塑制作公司上海商场春节美陈商场春夏季美陈九龙玻璃钢雕塑贵州景区玻璃钢雕塑江西仿铜玻璃钢雕塑销售厂家泰州古铜玻璃钢雕塑美陈商场项目图片红色玻璃钢卡通雕塑参考价青海动物玻璃钢雕塑定做南昌环保玻璃钢雕塑供应商聊城校园玻璃钢雕塑定制江苏专业玻璃钢雕塑品牌企业商丘校园玻璃钢雕塑设计宜兴商场美陈策划香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化