每日一面——谈一谈你对final,finally,finalize三者的理解

菜鸡每日一面系列打卡4

每天一道面试题目 

助力小伙伴轻松拿offer

坚持就是胜利,我们一起努力!

题目描述

谈一谈你对final,finally,finalize三者的理解。

题目分析

这是一道Java的基础题目,考察的是对三者的作用以及其使用场景的掌握程度,这道题目,答得出来很容易,但要答得准确,答得全面,答得深入就没那么容易了,一起来看一看吧。

题目解答

首先,需要明确的是,final,finally,finalize三者其实是完全不同的概念,我们依次来看。

  • final是Java的修饰符,关键字,可用来修饰类,方法和变量。

    • 修饰类:被final关键字修饰的类(简称final类)不能被继承,例如String类,final类中所有的成员方法都会隐式的定义为final方法;

    • 修饰方法:被final关键字修饰的方法(简称final方法)不能被重写;

    • 修饰变量:被final关键字修饰的变量即常量,只能被赋值一次,后续不能改变。

  • finally是Java的关键字,用于异常处理。

    • finally作为异常处理的一部分(可省略),只能用于try/catch语句之后,附带语句块作为最终的执行语句,常用于资源的释放,在新版本的Java(JDK1.7之后)可用try-with-resources代替;

    • finally语句块中的内容原则上来说一定会被执行,以下几种情况除外:

      • try语句块未执行

      • try语句块中通过system.exit(n)终止当前正在运行的虚拟机

      • finally语句块的第一句代码抛出异常

    • 在finally语句块正常执行的前提下,finally语句块中的return语句会覆盖try语句块或catch语句块中的return语句。

  • finalize()是在Object类中定义的一个方法。

    • finalize()方法在gc启动,该对象被回收时调用;

    • 调用finalize()方法不代表该对象会被立刻回收;

    • 一个对象的finalize()方法只能被调用一次。

小伙伴们可以看出,这三者之间没有任何联系,但都一定程度上表示了某些情况的最终状态,仅仅是因为词汇长得像,经常被面试官拿来提问,需要认真对待!

以上便是菜鸡对final,finally,finalize三者的理解。

学习 | 工作 | 分享

????长按关注“有理想的菜鸡

只有你想不到,没有你学不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值