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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HelloWorld_2013 中级黑马   /  2013-4-16 10:07  /  1450 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

final, finally, finalize的区别。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1.final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
2.finally是异常处理语句结构的一部分,表示总是执行。
3.finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此
回复 使用道具 举报
这个.....
回复 使用道具 举报
1、final

    修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 一句话:final修饰类时:没有祖先的光棍(不能继承也不能被继承),final修饰变量或者方法时:固定的,只能拿来用,不能改。
2、finally

    在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
3、finalize

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

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
Sword 金牌黑马 2013-4-16 12:48:21
7#


final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。 这一次我们就一起来回顼一下这方面的知识。 final关键字  我们首先来说说final。它可以用亍以下四个地方:
1. 定义变量,包括静态的和非静态的。 2. 定义方法的参数。 3. 定义方法。 4. 定义类。
  我们依次来回顼一下每种情况下final的作用。首先来看第一种情况,如果final修饰的是一 个基本类型,就表示这个变量被赋予的值是丌可变的,即它是个常量;
如果final修饰的是 一个对象,就表示这个变量被赋予的引用是丌可变的,这里需要提醒大家注意的是,丌可改 变的叧是这个变量所保存的引用,
并丌是这个引用所指向的对象。在第二种情况下,final的 含义不第一种情况相同。实际上对亍前两种情况,有一种更贴切的表述final的含义的描述,
那就是,如果一个变量戒方法参数被final修饰,就表示它叧能被赋值一次,但是JAVA虚拟 机为变量设定的默认值丌记作一次赋值。  
被final修饰的变量必须被初始化。初始化的方式有以下几种:
1. 在定义的时候初始化。
  2. final变量可以在初始化块中初始化,丌可以在静态初始化块中初始化。
3. 静态final变量可以在静态初始化块中初始化,丌可以在初始化块中初始化。
4. final变量还可以在类的构造器中初始化,但是静态final变量丌可以。

简单的总结一下就是:
inal:修饰符(关键字)如果一个类被声明成final,意味它不能在派生出子类,不能作为父类被继承。因此一个类不能既被声明时final和ABSTRACT的。

将变量或时方法声明是final,可以保证它们在使用中不被改变。被声明成FINAL的变量必须在声明时给出其初始值,而在以后的引用中只能被读取,不能被改变。被声明final的方法也只能使用不能覆盖。

finally:在异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配CATCH子句就会执行,然后控制块会进入finally块。

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

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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