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

    final关键字用法
    (1) 修饰类,这个类是终类,不能被继承。
    a. final类中的成员变量,可以根据自己的实际需要设计为fianl。
    b. final类中的成员方法,都会被隐式的指定为final方法。
    (2)修饰方法,被final修饰的方法不能被重写(覆盖)。
    a. 一个类的private方法会隐式的被指定为final方法。
    b. 如果父类中有final修饰的方法,那么子类不能去重写。
    (3)修饰成员变量
    a. 必须初始化值。有两种赋值方式:1、直接赋值 2、全部在构造方法中赋初值。
    b. 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
    c. 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。


    finally
    finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块。
    只要try中语句执行了,jvm没有被终止(System.exit(0))且线程不被终止,系统不死机断电,
    finally中语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。


    finalize
    finalize()是在Object里定义的,每个对象都有这个方法,当前对象被回收的时候,finalize()被调用。
    凡是new出来的对象,gc都回收,一般是不需要程序员去实现finalize的。

    [当对象被回收的时候手动释放一些资源,需要程序员实现finalize,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。
    使用finalize还需要注意一个事,调用super.finalize();

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

  • 相关阅读:
    ASP.NET MVC EF4.1
    RabbitMQ Boot Step
    图书商城项目总论
    CodeSharp.EventSourcing框架介绍如何实现异步事件订阅
    asp.net的cms 原理篇
    异步编程:线程概述及使用
    2012
    CodeSharp.EventSourcing框架介绍
    最近开发的一个文档管理系统
    团队项目开发
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/12950379.html
Copyright © 2011-2022 走看看