这是一道比较常见的面试题,考察应聘者的Java基本功。其实我一直觉得这道面试题挺奇怪的,因为他仨除了长得像之外,在功能上没有任何相似之处。
经典回答如下:
- finallyJava的异常处理机制分为:抛出异常(throws)和捕获异常(try - catch)。fianlly的作用是不管代码块是否发生异常,保证一段代码一定会被执行,用法是try - fianlly或者try - catch -fianlly。像关闭JDBC连接,释放锁这样的动作就需要放到fianlly里执行。
- finalfinal可以用在类上,变量上,方法上。用在类上表明这个类不能被继承;用在变量上表明这个变量不能被改写;用在方法上表明这个方法不能被覆写(Override)的。
- finalizefinalize的作用是在对象被当作垃圾回收前,完成特定资源的回收。是一个比较鸡肋的方法,属于Java的历史遗留问题,不建议使用。在Java9中已经被标记为过时方法。
有了上面的了解,我们现在看两个比较有意思的问题,供大家思考,有可能会在笔试题中出现哦!
先看下面的代码:
示例图1
请思考以下问题:
- 当x=4,y=2时,调用fianllyTest方法,返回值是多少?“fianlly”会不会被打印?
- 当x=4,y=2时,调用fianllyTest方法,返回值是多少?
答案:1.返回值是2,finally会被打印
2.返回值是-1
再看一个关于final的题,看如下代码:
示例图2