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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥江 中级黑马   /  2012-5-21 18:30  /  2278 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final, finally, finalize,这些关键字具体有怎样的区别,各自什么用法?

点评

就此打住了 亲~~~最后一次警告了哦~~~  发表于 2012-5-21 19:19

3 个回复

正序浏览
这是一道很常见的面试题。
final:被final修饰的类不能派生出新的子类。被final修饰的变量必须在声明时给定初始值,因为在以后的引用中就不能修改了。
finally:在异常处理机制中,finally块内的代码是一定会被执行的
finalize():书面化的说法就是:“Java 中可以使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。”。其实就是手动调用清理动作。又因为它是在Object类中定义的,因此所有类中都会继承此方法,而子类可以覆盖finalize()方法以整理系统资源或者执行别的清理动作。
回复 使用道具 举报
final 用于声明类、方法、变量属性,修饰方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,用于存放总是执行的代码。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的finalize方法,可以覆盖此方法提供垃圾收集时的其他资源回收。
回复 使用道具 举报
本帖最后由 杨尧 于 2012-5-21 18:35 编辑

fianl: 最终的意思,final修饰的类不能被继承,final修饰的方法不能北重写(覆盖) ,修饰的是一个基本类型,表示这个变量被赋予的值是不可变的,即它是个常量
finally是try后面的语句块之一,无论异常是否抛出,都会执行的语句块
finalize()方法的作用是什么呢? finalize()方法是在 GC 清理它所从属的对象时被调用的,如果执行它的过程中抛出了无法捕获的异常 (uncaught exception),GC 将终止对改对象的清理,并且该异常会被忽略;直到下一次 GC 开始清理这个对 象时,它的 finalize()会被再次调用。 由于 finalize()属于 Object 类,因此所有类都有这个方法,Object 的任意子类都可以重写(override)该方法, 在其中释放系统资源或者做其它的清理工作,如关闭输入输出流。 通过以上知识的回顾,我想大家对于 final、finally、finalize 的用法区别已经很清楚了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马