zoukankan      html  css  js  c++  java
  • final,finally,finalize的区别

    final用于声明类,方法,属性。

    声明类,类不能被继承;

    声明方法,方法不可重载;

    声明属性(变量),属性不可变。

    对于基本数据类型,很好理解,对于引用数据类型,引用变量指向的是实际的对象,但其存储的是所指向的对象的地址,因此,其值不能修改,并不意味只其所指向的对象不能修改。

    finally是异常处理语句结构的一部分,表示总是执行,常用于执行清除操作。

    如果有异常抛出,那么相应的catch子语句就会执行,然后控制会进入finally块(如果有的话)。

     

    finalize是方法名。java允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的工作,finalize()方法是在Object类中定义的,因此所有的类都继承了它。

    finalize()在什么时候被调用?有三种情况

    1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
    2.程序退出时为每个对象调用一次finalize方法。
    3.显式的调用finalize方法

    除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因

    有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java 资源,如文件句柄或window 字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放。为处理这样的状况,Java 提供了被称为收尾(finalization )的机制。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行。

  • 相关阅读:
    用perl做数据库迁移
    【记凡客诚品面试】需要规划的人生,需要专精的技术+京东笔试了。。。
    初学者应该看的东西
    mysql安装图解 mysql图文安装教程(详细说明)
    EMS SQL Manager for MySQL
    全局配置文件也面向服务了~续(对性能的优化)
    推荐几款软件界面模型设计工具
    asp.net中实现文件上传
    UltraEdit支持python语法高亮
    理解并发编程中的几种并发方式
  • 原文地址:https://www.cnblogs.com/arrrrrya/p/7700503.html
Copyright © 2011-2022 走看看