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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青岛_黑马 中级黑马   /  2015-3-30 22:14  /  823 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final, finally, finalize的区别,求大神解答

3 个回复

倒序浏览
final用于声明属性,方法和类,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示其中的代码总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
回复 使用道具 举报
第一个是关键字,修饰类,变量,成员方法,被修饰的类不可被继承,被修饰的变量成为常量,被修饰的方法不可被重写。、
第二个是异常语句里面的,无论该异常是否被抛出,都会执行finally方法中的代码
第三个是垃圾回收用的,好像是回收执行的时候,会调用里面的方法,我记得书上写了的,回收对象打印一个语句
回复 使用道具 举报
final修饰符(关键字),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。方法的参数被final修饰表示在方法体内,该参数的值不可以被修改。
[java] view plaincopy
private final String ss = "ss";  
  
public final void m(){  
  
}  
public String m2(final String param){  
   
}  
finally在异常处理时提供finally块来执行任何清除操作。无论有没有异常被抛出、捕捉,finally块都会被执行。
try块中的内容是在无异常发生时执行到结束
catch块中的内容,是在try块中内容发生catch所声明的异常时,跳转到catch块执行
finally块则是无论是否发生异常,都会执行finally块的内容
所以,代码逻辑中有需要无论发生什么都必须执行的代码,则可以放在finally块中
例如:最常见的就是把关闭connection、释放资源等的代码放在finally块中.

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