黑马程序员技术交流社区

标题: final,finally,finalize的区别 [打印本页]

作者: 赵磊    时间: 2011-7-20 12:32
标题: final,finally,finalize的区别
final,finally,finalize的区别
作者: 匿名    时间: 2011-7-20 12:37
final(修饰符),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。定义类的时候, abstract和final不能同时出现。
finally是在try-catch-finally块中配套使用。
finalize一般作为方法使用。使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
作者: 匿名    时间: 2011-7-20 12:54
1.final 修饰符(关键字)
       如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能即被声明为abstract,又被声明为final。将变量或方法声明为final,可以保证他们在使用中不被改变。其初始化可以在两个地方:一是其定义处,也就是说在final变量定义时直接给其赋值;二是在构造函数中。这两个地方只能选其一,要么在定义时直接赋值,要么在构造函数中给值,即鱼和熊掌不可兼得。一旦赋值,在以后的引用中只能读取,不可修改。被声明为final的方法同样只能使用,不能重写。
2.finally
    在异常处理时提供finally块来执行任何清除操作。如果抛出异常,那么相匹配的catch子句就会执行,然后进入finally块执行,注意:finally块一定会执行,即使在方法中已经返回值!
3.finalize
   finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾回收器在确定这个对象没有被引用时对这个对象调用的。它是Object类中定义的,因此所有的类都继承了它。子类覆盖finally()方法以整理系统资源或者执行其清理工作。
作者: 匿名    时间: 2011-7-20 13:18
final是关键字,表示“不可变”或“最终态”,可以声明类,方法及变量,声明的类不可被继承,声明的变量不能被修改,声明的方法不可被覆盖。
finally属于异常机制,和try-catch搭配使用。捕获异常之后,程序会寻找finally块结束。
finalize是方法名,Java 允许 finalize() 方法在垃圾收集器将对象从内存中清除之前做一些清理工作,在垃圾收集器删除对象之前对这个对象调用的。
作者: 匿名    时间: 2011-7-20 16:28
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型。

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2