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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nuoxi0318 中级黑马   /  2013-7-24 12:20  /  1211 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-24 20:56 编辑

  如题final, finally, finalize 都有神马具体的区别啊?   求回答具体点。很模糊。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

8 个回复

倒序浏览
final :修饰符(关键字)。使用该关键字修饰,不能作为父类被继承,不能再有子类,称之为最终类。
finally:在异常处理时最后一部分要用到的finally块
finalize:是垃圾回收机制里面的方法,finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
public final int=1;常量是不能被修改的;
public final class Store(){}  不能被子类继承,为最终类;
try{}catch{}finally{}为异常处理机制;
finalized() 为内存垃圾清理方法;

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
final关键字可以修饰类、变量和方法。
  final修饰的类不可以有子类。
  final修饰的变量一旦获得了初始值就不可以被改变。
  final修饰的方法不可以被重写,所以用final可以把方法密封起来。
finally{}用在异常中,{一定会执行的的语句,除非碰到System.exit()},其实质是用于及时回收try()或catch(){}中执行不到的物理资源。
finalize()是java提供的默认的垃圾回收机制,但此方法具有不确定性,也可能不会执行,只有当程序认为需要更多的额外内存时,它才会进行垃圾回收。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
inal是全局变量声明的时候使用,意思是这个变量不可被修改,不可被override,一般用于声明常量,或者系统设置的值。

例子:public static final String a = "123"
意思是: 公共的(所有范围可见),静态的(系统中只存在一个),final的(不可被更改) 变量a,值是123

finally是在try-catch-finally块中配套使用,作用是,不管代码执行了try还是catch,最后一定会执行finally里面的代码

例子:
try{
这里写一些可能出现异常的代码
}catch(Exception e){
出现了异常就执行这里的代码。否则不执行
}finally{
无论有没有异常,都执行这里的代码
}

finalize是召唤垃圾收集器的命令,使用后,系统就安排一次垃圾回收
但是不是立即执行,执行的时间点是无法确定的。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
final: 是一个修饰符,可以修饰变量、方法、类。当修饰变量时,被修饰的变量只能被赋值一次,例如:public  static final double PI = 3.14;被修饰的方法不能被复         
         写,称为终极方法;被修饰的类不能被继承,称为终极类。
finally :异常处理中一个关键字,表示无论有无异常一定会被执行的代码,除非java虚拟机退出。try{需要被检测的代码;}catch(异常类型  变量){异常处理的代
          码;}finally{一定会被执行到的代码;}。
finalize:方法名,一般有java虚拟机定时执行,回收内存的垃圾,比如没有引用指向的堆对象...等等。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
final:修饰符(关键字):声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally:异常处理语句结构的一部分,表示总是执行。
finalize:方法名,Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马