黑马程序员技术交流社区

标题: 关于final, finally, finalize [打印本页]

作者: wjj410830911    时间: 2013-11-18 17:56
标题: 关于final, finally, finalize
final, finally, finalize
final我知道 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
这个finalize是什么意思  没见过啊
作者: Sasson    时间: 2013-11-18 17:59
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
作者: zuiaichiyu    时间: 2013-11-18 18:02
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用
作者: 段光宇    时间: 2013-11-18 18:50
1.final—修饰符(关键字)。考虑安全性的方面,一些类不希望被继承,可以用final修饰
使用环境:
定义为final类通常有固定作用,用来完成某种标准的类。
若认为一个类的定义很完善,不希望生成子类,可以被修饰为final类。
有些类不希望被重写,也可以被修饰为final类
2.finally
使用环境:用来处理异常的清除操作,抛出异常后会进入finally块。
3. finalize
这一函数用来回收特殊渠道的内存。
比如调用了C语言,开辟了一块内存空间,在释放对象的时候,虚拟机只是释放对象占用的空间,而之前的C语言所开辟的特殊渠道的内存却不能被释放,这时候就可以用到finalize函数了
作者: wjj410830911    时间: 2013-11-19 02:03
已经知道了  谢谢大家的回答
作者: 黄炳期    时间: 2013-11-19 12:38
wjj410830911 发表于 2013-11-19 02:03
已经知道了  谢谢大家的回答

如果问题已经解决,可自行重新编辑帖子为“提问结束”,谢谢配合
作者: 木木赤赤    时间: 2013-11-19 18:22
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

finally 关键字是对 Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。 如果没有 finally,您的代码就会很费解。

finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
垃圾收集器只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,它的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作(如关闭流等操作)。





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