菜鸡每日一面系列打卡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三者的理解。
学习 | 工作 | 分享
????长按关注“有理想的菜鸡”
只有你想不到,没有你学不到