A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

是朕略萌

初级黑马

  • 黑马币:1

  • 帖子:7

  • 精华:0

© 是朕略萌 初级黑马   /  2016-4-5 19:56  /  543 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

A:面试题1
        * final,finally和finalize的区别
* B:面试题2
        * 如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。

4 个回复

倒序浏览
1、答案: final: 常量声明。 finally: 处理异常。 finalize: 帮助进行垃圾回收。
接口里声明的变量默认是final的。final类无法继承,也就是没有子类。这么做是出于基础类型的安全考虑,
比如String和Integer。这样也使得编译器进行一些优化,更容易保证线程的安全性。final方法无法重写。
final变量的值不能改变。
finalize()方法在一个对象被销毁和回收前会被调用。
finally,通常用于异常处理,不管有没有异常被抛出都会执行到。比如,关闭连接通常放到finally块中完成。
2、
不管有木有出现异常,finally块中代码都会执行;
当try和catch中有return时,finally仍然会执行;
finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
回复 使用道具 举报 1 0
不错,很好的笔记,不过还得更加丰富
回复 使用道具 举报
来学习知识
回复 使用道具 举报
可以假装看不见 发表于 2016-4-5 20:30
1、答案: final: 常量声明。 finally: 处理异常。 finalize: 帮助进行垃圾回收。
接口里声明的变量默认是f ...

学习了,多谢层主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马