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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjj410830911 中级黑马   /  2013-11-18 17:56  /  1619 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final, finally, finalize
final我知道 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
这个finalize是什么意思  没见过啊

6 个回复

倒序浏览
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用
回复 使用道具 举报
1.final—修饰符(关键字)。考虑安全性的方面,一些类不希望被继承,可以用final修饰
使用环境:
定义为final类通常有固定作用,用来完成某种标准的类。
若认为一个类的定义很完善,不希望生成子类,可以被修饰为final类。
有些类不希望被重写,也可以被修饰为final类
2.finally
使用环境:用来处理异常的清除操作,抛出异常后会进入finally块。
3. finalize
这一函数用来回收特殊渠道的内存。
比如调用了C语言,开辟了一块内存空间,在释放对象的时候,虚拟机只是释放对象占用的空间,而之前的C语言所开辟的特殊渠道的内存却不能被释放,这时候就可以用到finalize函数了
回复 使用道具 举报
已经知道了  谢谢大家的回答
回复 使用道具 举报
wjj410830911 发表于 2013-11-19 02:03
已经知道了  谢谢大家的回答

如果问题已经解决,可自行重新编辑帖子为“提问结束”,谢谢配合
回复 使用道具 举报
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(),就可以在垃圾收集期间进行一些重要的清除或清扫工作(如关闭流等操作)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马