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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵磊 黑马帝   /  2011-7-20 12:32  /  2689 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final,finally,finalize的区别

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 面试题

查看全部评分

6 个回复

倒序浏览
黑马网友  发表于 2011-7-20 12:37:19
沙发
final(修饰符),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。定义类的时候, abstract和final不能同时出现。
finally是在try-catch-finally块中配套使用。
finalize一般作为方法使用。使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 有面试题的地方,就有琚臻臻。

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 12:54:17
藤椅
1.final 修饰符(关键字)
       如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能即被声明为abstract,又被声明为final。将变量或方法声明为final,可以保证他们在使用中不被改变。其初始化可以在两个地方:一是其定义处,也就是说在final变量定义时直接给其赋值;二是在构造函数中。这两个地方只能选其一,要么在定义时直接赋值,要么在构造函数中给值,即鱼和熊掌不可兼得。一旦赋值,在以后的引用中只能读取,不可修改。被声明为final的方法同样只能使用,不能重写。
2.finally
    在异常处理时提供finally块来执行任何清除操作。如果抛出异常,那么相匹配的catch子句就会执行,然后进入finally块执行,注意:finally块一定会执行,即使在方法中已经返回值!
3.finalize
   finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾回收器在确定这个对象没有被引用时对这个对象调用的。它是Object类中定义的,因此所有的类都继承了它。子类覆盖finally()方法以整理系统资源或者执行其清理工作。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 13:18:22
板凳
final是关键字,表示“不可变”或“最终态”,可以声明类,方法及变量,声明的类不可被继承,声明的变量不能被修改,声明的方法不可被覆盖。
finally属于异常机制,和try-catch搭配使用。捕获异常之后,程序会寻找finally块结束。
finalize是方法名,Java 允许 finalize() 方法在垃圾收集器将对象从内存中清除之前做一些清理工作,在垃圾收集器删除对象之前对这个对象调用的。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 16:28:46
报纸
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 17:16:01
地板
同意  上方  说法

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 同上

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 21:55:36
7#
final—修饰符 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
  finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
  finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 都很明白了。

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马