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

    fianl:可以修饰类、变量、方法。修饰类不能被继承,修饰变量只能赋值一次,修饰方法不能被重写。

    finally是try语句体中的一个语句体,不能单独使用,用来释放资源。

     finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。 
    特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。 
      使用finalize还需要注意一个事,调用super.finalize();

      一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法,它跟析构函数不一样。

  • 相关阅读:
    VS2017+MPI10.0安装与环境配置
    数组翻转(非reverse)
    判断一个字符串中出现次数最多的字符,统计这个次数
    Mock模拟数据,前后端分离
    js放大镜
    360度全景图片
    照片墙应用
    KindEditor配置和使用
    关于IIS的错误 312 (net::ERR_UNSAFE_PORT):未知错误
    从C到C++:命令行参数
  • 原文地址:https://www.cnblogs.com/wangffeng293/p/11778349.html
Copyright © 2011-2022 走看看